Lui*_*han 3 excel vba excel-vba
我有问题解决错误"时间执行错误#13:不兼容类型".如果用户创建了一些未在数组中声明的工作表,则会将其删除.有人可以帮忙吗?
sub DeleteNewSheets()
Dim ws, wsP As Worksheet
Dim ArrayOne As Variant
Application.DisplayAlerts = False
ArrayOne = Array("SheetA", "SheetB", "SheetC", "Sheet_n")
Set wsP = ThisWorkbook.Worksheets(ArrayOne) ' <--- ERROR #13
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> wsP.Name Then ws.Delete
Next ws
Application.DisplayAlerts = True
end sub
Run Code Online (Sandbox Code Playgroud)
你的代码行说:
Set wsP = ThisWorkbook.Worksheets(ArrayOne)
Run Code Online (Sandbox Code Playgroud)
正在尝试将Worksheet对象设置为许多工作表的数组.这就像尝试将单个Integer设置为整数数组一样.
尝试使用以下代码
Sub DeleteNewSheets()
Dim ws As Worksheet
Dim ArrayOne() As Variant
Dim wsName As Variant
Dim Matched As Boolean
ArrayOne = Array("SheetA", "SheetB", "SheetC", "Sheet_n")
Application.DisplayAlerts = False
For Each ws In ThisWorkbook.Worksheets
Matched = False
For Each wsName In ArrayOne
If wsName = ws.Name Then
Matched = True
Exit For
End If
Next
If Not Matched Then
ws.Delete
End If
Next ws
Application.DisplayAlerts = True
End Sub
Run Code Online (Sandbox Code Playgroud)