【问题标题】:VBA: Or Operator not executing [duplicate]VBA:或操作员未执行[重复]
【发布时间】:2018-07-04 13:42:41
【问题描述】:

我正在尝试在 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

谁能给点建议?

提前谢谢你。

【问题讨论】:

  • “我确定我使用正确。” 不。这是一个布尔运算符。
  • CStr(Worksheets("MINUTES").Cells(x, 2)) = "A1.2" Or CStr(Worksheets("MINUTES").Cells(x, 2)) = "B1.1"

标签: vba


【解决方案1】:

您可以将每个标准都写出来,例如,

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

match-to-an-array 适用于多个 OR 条件,Select Case 适用于多个条件和多个结果。

【讨论】:

    猜你喜欢
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-29
    • 1970-01-01
    • 2017-09-08
    • 2020-11-18
    • 1970-01-01
    相关资源
    最近更新 更多