|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
IIf 函数在 VB (Visual Basic) 或 VBA (Visual Basic for Applications) 中是立即计算其所有参数。这就是说,不论条件成立与否,其实它会先执行所有的参数再根据条件决定返回那一个。
在你的表达式:
t1 = IIf(i < 27, "", Mid(txt, Fix(i / 26), 1))
这代表如果 i < 27 ,返回字符串 "",否则返回 Mid(txt, Fix(i / 26), 1)。但是,IIf 会先计算 Mid(txt, Fix(i / 26), 1) ,然后再判断 i 是不是小于 27。如果 i 小于 27,并且同时 txt 字符串长度小于 Fix(i / 26), 这将导致 Mid 函数出现运算错误。
而使用 If...Then...Else 结构时,程序会先判断 i 是否 小于 27。如果 i < 27,程序就直接将 t1 赋值为空字符串,不会再执行 Mid(txt, Fix(i / 26), 1) 这一条。这样就避开了 Mid 函数可能出现的运算错误。因此不会出错。这一特性叫做条件表达式的短路计算(Short-Circuit Evaluation)。 |
|