如果他们的名字属于数组,则删除工作表

我有一个工作簿与多个工作表命名像date如12-01-2015,12-02-2015,….等。我想创build一个代码,删除特定的工作表,如果他们的名字列在一个数组中。 我创build了一个代码,但它不起作用。 我的猜测是与“If”开头的错误语句有关。 我真的很感激任何提示,我错了

Sub DeleteSelectedSheets() Dim i As Long Dim Holidays() As Variant Holidays = Array("12-3-2015", "12-4-2015") For Each Worksheet In ActiveWorkbook If Worksheet(i).Name = Holidays(i) Then Application.DisplayAlerts = False Sheets(i).Delete Application.DisplayAlerts = True End If Next End Sub 

这似乎工作:

 Sub DeleteSelectedSheets() Dim i As Long Dim Holidays() As Variant Holidays = Array("12-3-2015", "12-4-2015") For i = Sheets.Count To 1 Step -1 If Sheets(i).Name = Holidays(0) Or Sheets(i).Name = Holidays(1) Then Application.DisplayAlerts = False Sheets(i).Delete Application.DisplayAlerts = True End If Next End Sub 
 Sub DeleteSelectedSheets() Dim Holidays As Variant Holidays = Array("Sheet1", "Sheet3", "Sheet5") For Each Sheet In ThisWorkbook.Sheets If UBound(Filter(Holidays, Sheet.Name)) > -1 Then Application.DisplayAlerts = False Sheet.Delete Application.DisplayAlerts = True End If Next End Sub 

这应该工作得很好!

除了这个例外, 不pipe你使用的代码是什么 ,只剩下一张纸,而你试图删除它,它会抛出一个错误信息!

LBound()UBound()

 Sub DeleteSelectedSheets() Dim i As Long Dim Holidays() As Variant Dim wS As Worksheet Holidays = Array("12-3-2015", "12-4-2015") For Each wS In ActiveWorkbook For i = LBound(Holidays) To UBound(Holidays) If wS.Name <> Holidays(i) Then Else Application.DisplayAlerts = False wS.Delete Application.DisplayAlerts = True Exit For End If Next i Next wS End Sub 

简单地尝试和删除数组中命名的工作表可能会更好。 当然,您需要在On Error Resume Next下面进行操作,以防止命名的工作表不存在的情况。

 Sub DeleteSelectedSheets() Dim h As Long, Holidays() As Variant Holidays = Array("12-3-2015", "12-4-2015") On Error Resume Next Application.DisplayAlerts = False For h = LBound(Holidays) To UBound(Holidays) Worksheets(Holidays(h)).Delete Next h 'alternate delete entire array (they need to be all there, fail on partial) 'Worksheets(Holidays).Delete Application.DisplayAlerts = True On Error GoTo 0 End Sub