【问题标题】:How does AND function work in VBA?AND 函数在 VBA 中如何工作?
【发布时间】:2017-12-03 15:58:19
【问题描述】:

如果这是一个愚蠢的问题,我很抱歉,但是 (Excel VBA) AND 函数会检查其中的每一个条件然后继续,还是在第一个 FALSE 条件处停止而不检查另一个?出于优化目的,我想知道,到目前为止,在网络上没有发现任何关于它的信息。在此先感谢!

示例:如果 InStr(txt, "abc") > 0 并且 InStr(txt, "xyz") > 0 那么

所以如果在 txt 变量中找不到“abc”(给出“假”),那么宏也会检查“xyz”或跳过其余条件

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    VBA 似乎还在继续:

    Sub ANDTest()
        If f1() And f2() Then MsgBox "X"
    End Sub
    
    Public Function f1() As Boolean
        f1 = False
    End Function
    
    Public Function f2() As Boolean
        MsgBox "in f2"
        f2 = False
    End Function
    

    【讨论】:

    • 非常感谢!很有帮助! :)
    【解决方案2】:

    是的,VBA 总是在 And 语句中测试 both 条件。这是您无法测试错误值的原因之一以及其他原因。

    例如:

    If Not IsError(range("a1").value) And range("a1").value > 0 Then
    

    当在单元格中遇到工作表错误值(例如#N/A、#DIV/0!等)时,上述操作将始终失败(类型不匹配),因为它仍会尝试查看错误值是否大于零。

    If Not IsError(range("a1").value) Then
         If range("a1").value > 0 Then
    

    当在单元格中遇到错误值时,上述操作不会失败,因为第一个 If 语句检测到错误并且永远不会到达第二个。

    在您的情况下,abcxyz 都必须在 txt 字符串内,否则语句将失败。

    【讨论】:

    • fwiw,VBA Or 语句也是如此。
    • 非常感谢!很有帮助! :) 是的 OR 工作得很好,我猜任何陈述都可能是真的。
    猜你喜欢
    • 1970-01-01
    • 2021-11-29
    • 2017-10-09
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-28
    • 1970-01-01
    相关资源
    最近更新 更多