Excel MsgBox中的If语句

Excel MsgBox中的If语句,excel,excel-formula,vba,Excel,Excel Formula,Vba,有没有人能在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

有没有人能在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个组合。

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
或者,如果你真的想把它放在一行中,你可以使用一种内联的方式,如果有重要的区别,但它们在你的特定用例中并不重要

Sub xx()
    MsgBox IIF(a1 = "", "word one","") & IIF(a2="", "word two", "")
End Sub
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
或者,如果你真的想把它放在一行中,你可以使用一种内联的方式,如果有重要的区别,但它们在你的特定用例中并不重要

Sub xx()
    MsgBox IIF(a1 = "", "word one","") & IIF(a2="", "word two", "")
End Sub
但请注意,函数同时计算truepart和falsepart,即使它只返回其中一个。因此,如果任何计算范围返回一个错误,那么整个语句将返回一个错误


但请注意,函数同时计算truepart和falsepart,即使它只返回其中一个。因此,如果任何计算范围返回错误,则整个语句将返回错误。您可以使用一个数组,该数组使用一个数组检查该范围内的所有单元格,如果生成一条自定义消息,该消息可以返回匹配的单词范围,或者在下面的示例中,返回单元格为空的行号

代码


如果生成一条自定义消息,该消息可以返回匹配的单词范围,或者在下面的示例中,返回单元格为空的行号,则可以使用一个数组来检查一个区域中的所有单元格

代码


在将1000个嵌套的IF放入一个字符串之前,您将达到语句/行连续长度的限制。。。你想达到什么目标?可能有一个更好的解决方案。MsgBox IIfa1=,word one,&IIfa2=,word two,但与使用ifs增量构建字符串相比,这不会为您带来任何好处operator@Comintern正如我所说,1000个组合,不是1000条if语句。@那么如何用if语句构建字符串呢?如果我可以将命令msgbox更改为string,也会达到同样的效果。在将1000个嵌套的if转换为一个字符串之前,您将达到语句/行连续长度的限制。。。你想达到什么目标?可能有一个更好的解决方案。MsgBox IIfa1=,word one,&IIfa2=,word two,但与使用ifs增量构建字符串相比,这不会为您带来任何好处operator@Comintern正如我所说,1000个组合,不是1000条if语句。@那么如何用if语句构建字符串呢?如果我可以为string.com更改命令msgbox,也会达到同样的效果。感谢you@D.Loo,如果这个答案满足了你的需要,那么别忘了接受它——应该这样做。感谢you@D.Loo,如果这个答案满足您的需要,那么,别忘了接受它。勇敢的投票人会出现并给出任何解释,以便双方都知道为什么他们不应该遵循这个答案,并教我如何改进它吗?勇敢的投票人会出现并给出任何解释,以便双方都知道为什么他们不应该遵循这个答案,并教我如何改进它吗?