和函数如何在VBA中工作?

和函数如何在VBA中工作?,vba,excel,Vba,Excel,如果这是一个愚蠢的问题,我很抱歉,但是(Excel VBA)和函数是否会检查其中的每一个条件,然后继续,或者在第一个错误条件下停止,而不检查另一个?我想知道优化的目的,但到目前为止在网上找不到任何关于它的信息。。提前谢谢 示例:如果InStr(txt,“abc”)>0且InStr(txt,“xyz”)>0,则 因此,如果在txt变量中找不到“abc”(给出“false”),则宏也会检查“xyz”或跳过其余条件是的,VBA总是在And语句中同时测试这两个条件。这是您无法测试错误值和其他内容的原因之

如果这是一个愚蠢的问题,我很抱歉,但是(Excel VBA)和函数是否会检查其中的每一个条件,然后继续,或者在第一个错误条件下停止,而不检查另一个?我想知道优化的目的,但到目前为止在网上找不到任何关于它的信息。。提前谢谢

示例:如果InStr(txt,“abc”)>0且InStr(txt,“xyz”)>0,则


因此,如果在txt变量中找不到“abc”(给出“false”),则宏也会检查“xyz”或跳过其余条件

是的,VBA总是在And语句中同时测试这两个条件。这是您无法测试错误值和其他内容的原因之一

例如:

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语句检测到错误,而第二个If语句从未到达


在您的情况下,abc和xyz都必须在txt字符串中,否则语句将失败。

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

fwiw,VBA或语句也是如此。非常感谢!非常有帮助!:)是的,这样做很好,我想任何说法都是正确的。非常感谢!非常有帮助!:)