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.Or
performance一样吗?
是的, WorksheetFunction.Or
performance相同。
原因是,就VBA而言,它是一个常规函数,因此VBA将在将所有parameter passing给函数之前对其进行评估。 该function将不会有机会进行懒惰评估。
为了让懒惰评估开始,评估结构必须是语言语法的一部分。 VBA没有它的语法,所以在以任何方式调用任何函数时都不会起作用。