[英]delete blank rows on an excel worksheet, in a different excel workbook, using vba
[英]Delete worksheet in Excel using VBA
我有一个生成许多工作簿的宏。 我希望宏在运行开始时检查文件是否包含 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
然后无需遍历工作簿中的所有工作表。
使用On Error Resume Next
,错误不会传播,而是被抑制。 因此,当工作表不存在或由于任何原因无法删除时,没有任何反应。 就像你会说:删除这张表,如果它失败了我不在乎。 Excel 应该找到工作表,你不会做任何搜索。
注意:当工作簿仅包含这两个工作表时,只会删除第一张工作表。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.