如何在 VBA 中评估 Or 语句?

Posted

技术标签:

【中文标题】如何在 VBA 中评估 Or 语句?【英文标题】:How is an Or statement evaluated in VBA? 【发布时间】:2015-11-14 12:26:03 【问题描述】:

我只是想知道Or 条件语句在 VBA/VB6 中是如何工作的。基本上,如果我们有If A Or B Then,布尔表达式的求值顺序是什么?如果 A 为真,是否也评估 B?

【问题讨论】:

无论如何都将被评估。在 VBA 中,我认为唯一的解决方法是将它们分成单独的嵌套 if 语句。 msdn.microsoft.com/EN-US/library/office/gg264205.aspx 以前:***.com/questions/24641923/… , ***.com/questions/3242560/andalso-orelse-in-vba/… 【参考方案1】:

以下是一些测试结果:

Public Sub DoTesting()

    ' Displays "Test1" followed by "Test2", so they're evaluated in order.
    ' Also, both expressions are evaluated even though Test1() is False.
    If Test1() And Test2() Then
    End If

    ' Displays "Test2" followed by "Test1", so they're evaluated in order.
    ' Also, both expressions are evaluated even though Test2() is True.
    If Test2() Or Test1() Then
    End If

    ' Displays "Test1" only. Test2() is not evaluated.
    If Test1() Then If Test2() Then Debug.Print ""

End Sub

Public Function Test1() As Boolean
    MsgBox "Test1"
    Test1 = False
End Function

Public Function Test2() As Boolean
    MsgBox "Test2"
    Test2 = True
End Function

因此,无论结果如何,OrAnd 中的两个表达式总是按顺序计算。您可以使用If ... Then If ... Then 来实现简单的内联短路。

【讨论】:

以上是关于如何在 VBA 中评估 Or 语句?的主要内容,如果未能解决你的问题,请参考以下文章

VBA - Access 03 - 遍历列表框,使用 if 语句进行评估

Java if 语句在同时具有赋值和相等性检查 OR - d 时如何工作? [复制]

访问 VBA - 使用 VBA 的 SQL 语句使用文本框组合框值在表单上填充列表框 OR

如何在Spark中使用AND或OR条件

Word VBA虽然Wend语句不起作用

VBA if语句