Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 尝试使用IIF作为三元运算符/不计算两边_Excel_Vba - Fatal编程技术网

Excel 尝试使用IIF作为三元运算符/不计算两边

Excel 尝试使用IIF作为三元运算符/不计算两边,excel,vba,Excel,Vba,我需要使用iif() Range("A1").Value = IIf(IsNull(Range("A2").Value), MsgBox("1"), MsgBox("2")) 我真的很困惑:这行同时执行MsgBoxes。根据条件是否为真/假,我只需要执行其中一个 我尝试使用if条件,但它导致了一个错误:“编译错误:预期:表达式” 请帮忙。谢谢。声明无论输出结果如何,它都会执行True和False条件 您需要类似于以下内容的代码: Dim Result as Integer If IsNull(

我需要使用
iif()

Range("A1").Value = IIf(IsNull(Range("A2").Value), MsgBox("1"), MsgBox("2"))
我真的很困惑:这行同时执行
MsgBox
es。根据条件是否为真/假,我只需要执行其中一个

我尝试使用
if
条件,但它导致了一个错误:“编译错误:预期:表达式”

请帮忙。谢谢。

声明无论输出结果如何,它都会执行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
参数。

如果
IIf
的VBA文档出错。在VBA中调用的每个函数都需要先计算其参数,然后函数才能将其结果作为参数值接收<代码>IIf
在这里不是罪魁祸首,这是基本的语言机制。另外,该链接用于MS Access
IIf
函数,除非我弄错了,否则它是Access SQL的一部分,而不是VBA。