IIf 函数有3个参数,可以是3个表达式,第1个表达式的值为真时返回第2个表达式的值,为假则返回第3个表达式的值。
虽然只是返回1个值,但IIf却要把所有表达式都计算一遍。按理说第1个表达式为真时,只计算第2个表达式的值即可,但却多余地把第3个表达式也计算了。因为这个原因,使得IIf函数的效率比较低,更严重的是还造就了一个陷阱。
请看下面的代码:
y = IIf(x = 0, 0, 1 / x)
为了避免除0错误,在IIf的第1个参数中判断当x=0时,直接返回0。但当x真的等于0时,结果还是会出现除0错误,因为IIf把第3个表达式也计算了!