看下代码,IIF语句会将 True 和 False 都计算一遍,其中一个不正确就会出错,但if then 语句就不会比如情况1时,当strcp ="a|b"时正常,但没有了"|"就报错了
情况2,无论strcp中有没有"|"都执行正常。如果要测试的话,只选其中一种情况,将另一种情况注释掉这个确实是这样子的吗?如果iif会将True和False情况都计算一次,那从效率上讲会不会比IF THEN 慢一些,这样的话,我以后就不再用IIF了! Dim iTemp As Long
Dim strCp As String
strCp = "MyTestStr"
iTemp = InStr(strCp, "|")'情况1
'' SelComputer = IIf(iTemp > 1, Left(strCp, iTemp - 1), strCp) 'IIf 语句会先将 True 和 False 都计算一遍,会出错’情况2
If iTemp > 1 Then
SelComputer = Left(strCp, iTemp - 1)
Else
SelComputer = strCp
End If
情况2,无论strcp中有没有"|"都执行正常。如果要测试的话,只选其中一种情况,将另一种情况注释掉这个确实是这样子的吗?如果iif会将True和False情况都计算一次,那从效率上讲会不会比IF THEN 慢一些,这样的话,我以后就不再用IIF了! Dim iTemp As Long
Dim strCp As String
strCp = "MyTestStr"
iTemp = InStr(strCp, "|")'情况1
'' SelComputer = IIf(iTemp > 1, Left(strCp, iTemp - 1), strCp) 'IIf 语句会先将 True 和 False 都计算一遍,会出错’情况2
If iTemp > 1 Then
SelComputer = Left(strCp, iTemp - 1)
Else
SelComputer = strCp
End If
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货