如果不在数组中,则删除Excel工作表

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)

Yow*_*E3K 6

你的代码行说:

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)