有没有人有办法在VBA中的msgbox中包含if语句?我似乎无法通过搜索来找到合适的解决方案......
为了解释,假设我有三个单元格a1和a2,如果其中任何一个为空,我想要一个单词包含在msgbox中。
所以我想要像
这样的东西Sub xx
Msgbox if a1 = "" include "word one" end if & if a2="" include "word two" end if
End sub
我知道我可以使用msgbox之外的if
语句来完成它,但我的问题有点大,需要超过1000种组合。
答案 0 :(得分:4)
MsgBox
将字符串作为第一个参数。因此,您不能在其中包含If
等语句。但是,您可以使用If
构建字符串并将该字符串传递给MsgBox
,如下所示:
Sub xx()
Dim message As String
If a1 = "" Then
message = "word one"
End If
If a2 = "" then
message = message & "word two"
End if
MsgBox message
End Sub
或者,如果你真的想要它在一行中,你可以使用种内联的IIF
(如果有重要的区别,但它们在你的具体用途中无关紧要)情况下)
Sub xx()
MsgBox IIF(a1 = "", "word one","") & IIF(a2="", "word two", "")
End Sub
答案 1 :(得分:0)
MsgBox "I include " & IIf(Range("a1") = "", "word one", "") & IIf(Range("a2") = "", "word two", "")
但请注意IIF()函数“计算truepart和falsepart,即使它只返回其中一个。”以便如果任何计算范围返回错误则整个语句返回错误
答案 2 :(得分:0)