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