试图使用IIF作为三元运算符/不评估双方

use*_*854 2 excel vba excel-vba

我需要使用iif()我的检查和分配值的情况,如:

Range("A1").Value = IIf(IsNull(Range("A2").Value), MsgBox("1"), MsgBox("2"))
Run Code Online (Sandbox Code Playgroud)

我真的很困惑:这条线正在执行两个MsgBoxes.我需要只执行其中一个,具体取决于条件是真还是假.

我尝试使用if条件,但它会导致错误:"编译错误:预期:表达式"

请帮忙.谢谢.

Mon*_*ild 7

IIfVBA文档声明无论输出如何,它都会执行True和False条件.

您需要类似以下的代码:

Dim Result as Integer
If IsNull(Range("A2").Value) Then
    Result = MsgBox("1")
Else
    Result = MsgBox("2")
End If
Range("A1").Value = Result
Run Code Online (Sandbox Code Playgroud)

或者,如果您正在寻找一个班轮:

Range("A1").Value = MsgBox(IIf(IsNull(Range("A2").Value), "1", "2"))
Run Code Online (Sandbox Code Playgroud)

虽然这不允许您MsgBox像阻止块一样容易地更改其他参数.