如何在 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
因此,无论结果如何,Or
或 And
中的两个表达式总是按顺序计算。您可以使用If ... Then If ... Then
来实现简单的内联短路。
【讨论】:
以上是关于如何在 VBA 中评估 Or 语句?的主要内容,如果未能解决你的问题,请参考以下文章
VBA - Access 03 - 遍历列表框,使用 if 语句进行评估
Java if 语句在同时具有赋值和相等性检查 OR - d 时如何工作? [复制]