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

时间:2014-05-14 04:39:08

标签: excel-vba vba excel

我需要使用iif()来检查和分配值,例如:

Range("A1").Value = IIf(IsNull(Range("A2").Value), MsgBox("1"), MsgBox("2"))

我真的很困惑:这条线正在执行MsgBox es。我需要只执行其中一个,具体取决于条件是否为真。

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

请帮忙。感谢。

1 个答案:

答案 0 :(得分:7)

VBA documentation for IIf表示无论输出如何,它都会执行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

或者,如果您正在寻找单行代码:

Range("A1").Value = MsgBox(IIf(IsNull(Range("A2").Value), "1", "2"))

虽然这不允许您像阻止块一样轻松地更改其他MsgBox参数。