Excel WorksheetFunction.Or

Excel WorksheetFunction.Or

WorksheetFunction.Or 评估所有参数,还是立即 return True 一旦参数评估为 True

问题是,我正在尝试检查一个变量是否为数字,如果是,我想检查它是否小于 1。您可以在下面看到它:

If IsNumeric(lvl) Or lvl < 1 Then
    Do sth...
End If

描述 here,VBA 中的 Or 运算符计算所有参数,当 _lvl_ 不是数字时我得到类型不匹配错误。 WorksheetFunction.Or 的行为是否相同?

是的,WorksheetFunction.Or 行为相同。

原因是,就 VBA 而言,它是一个常规函数,因此 VBA 将在将所有参数传递给函数之前对其进行评估。该函数将没有机会执行惰性求值。

为了启动惰性求值,求值结构必须是语言语法的一部分。 VBA 在它的语法中没有它,所以它在以任何方式调用任何函数时都不会起作用。