ANDfunction如何在VBA中工作?

对不起,如果这是一个愚蠢的问题,但(Excel VBA)AND函数检查其中的每一个单一的条件,然后继续,或停在第一个假的条件,而不是检查另一个? 我想知道优化的目的,到目前为止在网上没有发现任何关于..在此先感谢!

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

所以如果在txtvariables中找不到“abc”(给出“false”),那么macros也会检查“xyz”或跳过其余的条件

看来,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 

在这里输入图像描述

是的,VBA总是在And语句中testing这两个条件。 这是你不能testing错误值的其中一个原因。

例如:

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

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

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

当单元格中遇到一个错误值时,以上不会失败,因为第一个If语句检测到错误,而第二个从未到达。

在你的情况下, abcxyz都必须在txtstring中,否则语句失败。