我需要使用iif()
来检查和分配值,例如:
Range("A1").Value = IIf(IsNull(Range("A2").Value), MsgBox("1"), MsgBox("2"))
我真的很困惑:这条线正在执行MsgBox
es。我需要只执行其中一个,具体取决于条件是否为真。
我尝试使用if
条件,但它会导致错误:"编译错误:预期:表达式"
请帮忙。感谢。
答案 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
参数。