Альтернативная реализация, использующая For-Each
:
Sub deleteSheets()
Dim wb As Workbook
Dim sht As Worksheet
Set wb = Workbooks("Name of your Workbook")
'Set wb = ThisWorkbook You can use this if the code is in the workbook you want to work with
Application.DisplayAlerts = False 'skip the warning message, the sheets will be deleted without confirmation by the user.
For Each sht In wb.Worksheets
If IsEmpty(sht.Range("D22")) And wb.Worksheets.Count > 1 then
sht.Delete
End If
Next sht
Application.DisplayAlerts = True
End Sub
Это в основном служит демонстрацией того, как вы можете легко просматривать рабочие листы.
Как предложено в комментариях ниже @Darren Bartrup-Cook, логика, согласно которой удаляются листы, может и должна быть изменена, чтобы не только соответствовать вашим целям, но и включать меры предосторожности.
Убедиться, что в рабочей книге всегда есть хотя бы один лист, является одним из них. Это может быть обеспечено множеством способов. Я обновил свой ответ, чтобы реализовать один из них.