Есть файл с множеством листов. Названия листов и текст в ячейке G2 совпадают. Необходимо удалить все листы, названия которых нет в списке.
Нашел макрос с условием удаления листов. если ячейка А2 пустая. [vba]
Код
Sub DeleteSheets() Dim i As Integer Application.DisplayAlerts = False For i = Sheets.Count To 2 Step -1 If IsEmpty(Sheets(i).Cells(2, 1)) Then Sheets(i).Delete Next Application.DisplayAlerts = True End Sub
[/vba]
Методом "научного тыка" пробовал переделать под свою задачу, но моих "знаний" определенно не хватает. Буду очень благодарен за помощь.
Есть файл с множеством листов. Названия листов и текст в ячейке G2 совпадают. Необходимо удалить все листы, названия которых нет в списке.
Нашел макрос с условием удаления листов. если ячейка А2 пустая. [vba]
Код
Sub DeleteSheets() Dim i As Integer Application.DisplayAlerts = False For i = Sheets.Count To 2 Step -1 If IsEmpty(Sheets(i).Cells(2, 1)) Then Sheets(i).Delete Next Application.DisplayAlerts = True End Sub
[/vba]
Методом "научного тыка" пробовал переделать под свою задачу, но моих "знаний" определенно не хватает. Буду очень благодарен за помощь.SkyPro
Sub DeleteSheets() Dim i As Long, Str As String Application.DisplayAlerts = False Str = " " & ActiveSheet.Name & " " For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1 Str = Str & " " & Cells(i, 1) & " " Next
For i = Sheets.Count To 1 Step -1 If Not Str Like "* " & Sheets(i).Name & " *" Then Sheets(i).Delete Next Application.DisplayAlerts = True End Sub
[/vba]
[vba]
Код
Sub DeleteSheets() Dim i As Long, Str As String Application.DisplayAlerts = False Str = " " & ActiveSheet.Name & " " For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1 Str = Str & " " & Cells(i, 1) & " " Next
For i = Sheets.Count To 1 Step -1 If Not Str Like "* " & Sheets(i).Name & " *" Then Sheets(i).Delete Next Application.DisplayAlerts = True End Sub