Excel 使用数组跳过特定图纸

Excel 使用数组跳过特定图纸,excel,vba,Excel,Vba,我是vba新手,正在尝试使用vba代码检查数组中的工作表名称,如果名称与工作表名称匹配,则跳过该工作表。但是,代码不起作用,它会跳过与数组长度相等的表。此外,是否可以将“if-Then-else”与数组一起使用 此代码将遍历数组中的工作表,并在即时窗口中列出每个工作表的名称,除非在运行代码时它是活动工作表 Dim Ws As Worksheet Dim a As Long Dim WsName As Variant WsName = Array("Sheet1", "Sheet2", "Sh

我是vba新手,正在尝试使用vba代码检查
数组
中的工作表名称,如果名称与工作表名称匹配,则跳过该工作表。但是,代码不起作用,它会跳过与
数组长度相等的表。此外,是否可以将“if-Then-else”与
数组一起使用




此代码将遍历数组中的工作表,并在即时窗口中列出每个工作表的名称,除非在运行代码时它是活动工作表

Dim Ws As Worksheet
Dim a As Long
Dim WsName As Variant

WsName = Array("Sheet1", "Sheet2", "Sheet3", "Sheet4", "Sheet5")

For a = LBound(WsName) To UBound(WsName)
    Set Ws = Worksheets(WsName(a))
    If Not Ws Is ActiveSheet Then
        Debug.Print Ws.Name
    End If
Next a

如果工作表不存在,则会出现错误。

如果需要查看阵列,我建议如下:

For Each ws In ThisWorkbook.Worksheets(wsname)
甚至直接:

For Each ws In ThisWorkbook.Worksheets(Array("Sheet1", "Sheet2", "Sheet3", "Sheet4", "Sheet5"))
它可能如下所示:

Sub Test()

Dim ws As Worksheet
Dim wsname As Variant: wsname = Array("Sheet1", "Sheet2", "Sheet3", "Sheet4", "Sheet5")

For Each ws In ThisWorkbook.Worksheets(wsname)
    If Not ws Is ActiveSheet Then
        'Do Something
    End If
Next ws

End Sub

然而,使用
ActiveSheet
(以及原始帖子中的
.Activate
)几乎是不需要的,也不推荐使用

欢迎来到SO。代码不起作用。这可能是描述问题的最糟糕的方式之一。请参阅,谢谢您的帮助。。它真的很有用。我肯定会记住您关于使用
ActiveSheet
Sub Test()

Dim ws As Worksheet
Dim wsname As Variant: wsname = Array("Sheet1", "Sheet2", "Sheet3", "Sheet4", "Sheet5")

For Each ws In ThisWorkbook.Worksheets(wsname)
    If Not ws Is ActiveSheet Then
        'Do Something
    End If
Next ws

End Sub