Вычисляет ли оператор «And» VBA второй аргумент, когда первый имеет значение false?

Function Foo(thiscell As Range) As Boolean
  Foo = thiscell.hasFormula And (InStr(1, UCase(Split(thiscell.formula, Chr(40))(0)), "bar") > 0)
End Function

Эта функция существует для проверки наличия определенной подстроки (в данном случае bar) перед (.

У меня проблемы с когда ячейка, переданная в функцию, пуста, thisCell.hasFormula имеет значение false, но оператор после и все еще оценивается. Это дает мне ошибку индекса вне допустимого диапазона во время выполнения.

Действительно ли VBA продолжает оценивать второй аргумент для And, даже если первый был ложным?

48
задан James 10 August 2011 в 19:26
поделиться