看下代码,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