在VBA中使用变量列表的If语句

时间:2019-07-17 18:03:22

标签: excel vba

我正在尝试编写一条if语句,该命令检查当前excel选项卡与列表(存储在另一个选项卡上,在vba中手动输入列表中的列表)或其他列表,并且该语句处于循环中。如果我在VBA中手动从列表中键入一项,则一切正常,但我想不出一种方法来引用整个列表。

我尝试了一些案例,引用了一个范围,将列表手动放入直接的VBA代码中。

期望的结果是使“ ABC”为20-40个不同项目的列表。我希望避免超长或声明。为了提高效率,我希望只在某个范围内输入数据,这样我就不必在每次数据更改时都手动更新VBA。

Dim ws As Worksheet

For Each ws In ActiveWorkbook.Worksheets 'This statement starts the loop
    If ws.Name = "ABC" Then





1 个答案:

答案 0 :(得分:0)

类似于以下代码的代码将满足您的需求(有关某些说明,请参见代码注释):

Dim ws As Worksheet
Dim SheetNamesArr As Variant

' read the sheet names array from a range in one of your sheets
SheetNamesArr = ThisWorkbook.Sheets("Sheet2").Range("A1:A10") ' <-- you can modify the range to suit your needs

For Each ws In ActiveWorkbook.Worksheets 'This statement starts the loop
    ' use Match to find if shee't sname is found within an array
    If Not IsError(Application.Match(ws.Name, SheetNamesArr, 0)) Then
        ' do something if sheet's name is found

    Else
        ' do something else >> raise an error msg

    End If

Next ws