Excel WorksheetFunction.Or

WorksheetFunction.Or是否评估所有参数,还是一旦参数计算为True就立即返回True

事情是,我试图检查一个variables是否是数字,如果是,我想检查它是否小于1.您可以在下面看到它:

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

在这里描述,VBA中的Or运算符评估所有参数,当_lvl_不是数字时,我得到types不匹配错误。 WorksheetFunction.Orperformance一样吗?

是的, WorksheetFunction.Orperformance相同。

原因是,就VBA而言,它是一个常规函数,因此VBA将在将所有parameter passing给函数之前对其进行评估。 该function将不会有机会进行懒惰评估。

为了让懒惰评估开始,评估结构必须是语言语法的一部分。 VBA没有它的语法,所以在以任何方式调用任何函数时都不会起作用。