使用VBA在Excel中删除工作表

我有一个生成大量工作簿的macros。 我希望macros在运行开始时检查文件是否包含2个电子表格,如果存在,删除它们。

我试过的代码是:

If Sheet.Name = "ID Sheet" Then Application.DisplayAlerts = False Sheet.Delete Application.DisplayAlerts = True End If If Sheet.Name = "Summary" Then Application.DisplayAlerts = False Sheet.Delete Application.DisplayAlerts = True End If 

此代码正在返回一个错误:

运行时错误#424,需要的对象。

我可能有格式错误,但如果有一个更简单的方法来做到这一点,这将是非常有用的。

考虑:

 Sub SheetKiller() Dim s As Worksheet, t As String Dim i As Long, K As Long K = Sheets.Count For i = K To 1 Step -1 t = Sheets(i).Name If t = "ID Sheet" Or t = "Summary" Then Application.DisplayAlerts = False Sheets(i).Delete Application.DisplayAlerts = True End If Next i End Sub 

注意:

因为我们正在删除 ,所以我们向后运行循环

试试这个代码:

 For Each aSheet In Worksheets Select Case aSheet.Name Case "ID Sheet", "Summary" Application.DisplayAlerts = False aSheet.Delete Application.DisplayAlerts = True End Select Next aSheet 

您可以使用On Error Resume Next那么不需要遍历工作簿中的所有工作表。

注意:当工作簿只包含这两张纸时,只有第一张纸将被删除。

 Dim book Dim sht as Worksheet set book= Workbooks("SomeBook.xlsx") On Error Resume Next Application.DisplayAlerts=False Set sht = book.Worksheets("ID Sheet") sht.Delete Set sht = book.Worksheets("Summary") sht.Delete Application.DisplayAlerts=True On Error GoTo 0 
 Worksheets("Sheet1").Delete Worksheets("Sheet2").Delete 

在你的if语句中试试这个:

 Application.DisplayAlerts = False Worksheets(“Sheetname”).Delete Application.DisplayAlerts = True