AND功能如何在VBA中工作?

时间:2017-12-03 15:58:20

标签: excel vba excel-vba

对不起,如果这是一个愚蠢的问题,但(Excel VBA)AND功能是否检查其中的每一个条件然后继续,或者在第一个FALSE条件下停止而不检查另一个?我想了解优化目的,到目前为止在网上找不到任何内容..提前致谢!

示例:如果是InStr(txt," abc")> 0和InStr(txt," xyz")> 0然后

所以如果" abc"没有在txt变量中找到(给出' false'),那么宏会检查" xyz"太多或跳过休息条件

2 个答案:

答案 0 :(得分:5)

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

enter image description here

答案 1 :(得分:2)

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

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