Страницы: 1
RSS
Удаление множества листов макросом
 
Добрый день.
У меня в книге реализовано удаление листов по (CODENAME)
Код
Application.DisplayAlerts = False
  Sheet02.Delete
  Sheet04.Delete
  Sheet05.Delete
Application.DisplayAlerts = True

1. Если лист по какой то причине не находится в книге или изменен Codename, то марос останавливается. Как это избежать?
2. Можно упростить код что бы не писать для каждого листа .Delete? Например все листы загнать в переменную и один раз прописать для нее удаление.

Заранее спасибо!
Изменено: vikttur - 18.08.2021 23:05:07
 
Код
Sub SheetsDelete()
    Dim sht As Worksheet
    Dim aName()
    Dim n As Long
    
    aName = Array("Sheet02", "Sheet05", "Sheet07")
    Application.DisplayAlerts = False
    
    For n = 0 To UBound(aName)
        For Each sht In Worksheets
            If sht.CodeName = aName(n) Then
                sht.Delete: Exit For
            End If
        Next sht
    Next n
    
    Application.DisplayAlerts = True
End Sub
 
Здравствуйте. Без файла-примера как-то не особо... Вот гляньте на подобный пример.
 
Здравствуйте
2 варианта
Код
Sub Del()
    Dim wb As Workbook, Sh As Worksheet
    ListToDel = ",Лист1,Лист2,"
    Set wb = ActiveWorkbook
    Application.DisplayAlerts = False
    For Each Sh In wb.Worksheets

'        If InStr(1, ListToDel, "," & Sh.CodeName & ",", vbTextCompare) > 0 Then
'            Sh.Delete
'        End If

        If InStr(1, ListToDel, "," & Sh.Name & ",", vbTextCompare) > 0 Then
            Sh.Delete
        End If
    Next
    Application.DisplayAlerts = True
End Sub
Изменено: doober - 18.08.2021 23:07:02
 
Спасибо большое! Буду тестить.
Страницы: 1
Наверх