If-Then-Else-EndIf VERSUS IIF

Hip*_*GER 1 vba if-statement

我想知道为什么以下这些代码不相等:

test = IIf(CURRENCY_ Is Nothing, " ", IIf(IsEmpty(CURRENCY_.Value), " ", CStr(CURRENCY_.Value)))
Run Code Online (Sandbox Code Playgroud)

If CURRENCY_ Is Nothing Then
     test = " "
Else: IsEmpty (CURRENCY_.Value)
     test = CStr(CURRENCY_.Value)
End If
Run Code Online (Sandbox Code Playgroud)

对于第一个代码,我得到以下错误:

未设置对象变量或带块变量

有人可以帮我吗?

Vit*_*ata 5

IIF()在给出结果之前,评估者会评估真假部分。因此,如果False零件给出某种错误,则会抛出该错误:

Sub TestMeIIf()        
    Debug.Print IIf(True, "It is true", 0 / 0)        
End Sub
Run Code Online (Sandbox Code Playgroud)

If()-Else-End If仅评估的True一部分。如果False零件抛出错误,它将被忽略:

Sub TestMeIf()
    If True Then
        Debug.Print "It is true!"
    Else
        Debug.Print 0 / 0
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)