VBA:或操作员未执行

时间:2018-07-04 13:42:41

标签: vba

我试图在VBA中使用OR运算符,但是在编译时出现错误。我已经在线检查了语法,并且确定可以正确使用它。

例如,如果我做这样的事情:

 If CStr(Worksheets("MINUTES").Cells(x, 2)) = "A1.2" Or "B1.1" Then
    Worksheets("MINUTES").Rows(x).Hidden = True
    End If

我收到类型不匹配错误。但是,将执行以下代码:

If CStr(Worksheets("MINUTES").Cells(x, 2)) = "A1.2" Then
        Worksheets("MINUTES").Rows(x).Hidden = True
        End If

If CStr(Worksheets("MINUTES").Cells(x, 2)) = "B1.1" Then
        Worksheets("MINUTES").Rows(x).Hidden = True
        End If

有人可以请教吗?

先谢谢您。

1 个答案:

答案 0 :(得分:3)

您可以将每个条件写得很长,

If CStr(Worksheets("MINUTES").Cells(x, 2)) = "A1.2" Or _
   CStr(Worksheets("MINUTES").Cells(x, 2)) = "B1.1" Then
    Worksheets("MINUTES").Rows(x).Hidden = True
End If

或者,将多个OR条件堆叠到一个数组中,然后寻找匹配项。

if not iserror(application.match(CStr(Worksheets("MINUTES").Cells(x, 2)), array("A1.2", "B1.1"), 0)) then
    Worksheets("MINUTES").Rows(x).Hidden = True
End If

...或使用Select Case语句。

select case CStr(Worksheets("MINUTES").Cells(x, 2))
    case "A1.2", "B1.1"
        Worksheets("MINUTES").Rows(x).Hidden = True
    case else
        'do nothing
end select

“与阵列匹配”在多种“或”条件下运作良好,“选择案例”在多种条件和多种结果下运作良好。