Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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 将多个MsgBox合并为一个_Excel_Vba - Fatal编程技术网

Excel 将多个MsgBox合并为一个

Excel 将多个MsgBox合并为一个,excel,vba,Excel,Vba,当我们打开此工作簿时,此代码将在一个区域中查找包含文本“RCA Pending”的单元格,并将弹出一个MsgBox,让用户知道该列中的哪一行包含特定文本。问题是,如果有多行包含此文本,那么还会有多个MsgBox弹出窗口 Private Sub Auto_Open() Dim i As Variant Dim FindRange As Range Set FindRange = Range("AB2:AB2000") For Each i In FindRange If

当我们打开此工作簿时,此代码将在一个区域中查找包含文本“RCA Pending”的单元格,并将弹出一个MsgBox,让用户知道该列中的哪一行包含特定文本。问题是,如果有多行包含此文本,那么还会有多个MsgBox弹出窗口

Private Sub Auto_Open()

Dim i As Variant
Dim FindRange As Range
Set FindRange = Range("AB2:AB2000")

    For Each i In FindRange
        If i = "RCA Pending" Then

        MsgBox "Found 'RCA Pending' in cell" & " " & i.Address, vbExclamation, "Attention"

        End If
    Next i
End Sub
此代码中需要更改哪些内容,以便只有一个弹出窗口列出找到“RCA挂起”的所有行?

尝试此代码:

Private Sub Auto_Open()    

Dim i As Variant
Dim FindRange As Range
Dim Msg As String
Set FindRange = Range("AB2:AB2000")

    For Each i In FindRange
       If i = "RCA Pending" Then

        If Msg = "" Then
         Msg = "Found 'RCA Pending' in cell" & " " & i.Address
        Else
         Msg = Msg & Chr(10) & "Found 'RCA Pending' in cell" & " " & i.Address
        End If

       End If
    Next i
    If Msg <> "" Then MsgBox Msg, vbExclamation, "Attention"
End Sub
Private Sub Auto_Open()
Dim i作为变体
暗淡的芬德兰奇作为射程
作为字符串的Dim Msg
设置FindRange=范围(“AB2:AB2000”)
对于我在芬德兰奇的每一个人
如果i=“RCA待定”,则
如果Msg=”“,则
Msg=“在单元格”和“&i.地址中找到“RCA挂起”
其他的
Msg=Msg&Chr(10)&“在单元格中找到待处理的RCA”&“i.地址”
如果结束
如果结束
接下来我
如果是“Msg”,则MsgBox Msg,VBE感叹号为“注意”
端接头
尝试以下代码:

Private Sub Auto_Open()    

Dim i As Variant
Dim FindRange As Range
Dim Msg As String
Set FindRange = Range("AB2:AB2000")

    For Each i In FindRange
       If i = "RCA Pending" Then

        If Msg = "" Then
         Msg = "Found 'RCA Pending' in cell" & " " & i.Address
        Else
         Msg = Msg & Chr(10) & "Found 'RCA Pending' in cell" & " " & i.Address
        End If

       End If
    Next i
    If Msg <> "" Then MsgBox Msg, vbExclamation, "Attention"
End Sub
Private Sub Auto_Open()
Dim i作为变体
暗淡的芬德兰奇作为射程
作为字符串的Dim Msg
设置FindRange=范围(“AB2:AB2000”)
对于我在芬德兰奇的每一个人
如果i=“RCA待定”,则
如果Msg=”“,则
Msg=“在单元格”和“&i.地址中找到“RCA挂起”
其他的
Msg=Msg&Chr(10)&“在单元格中找到待处理的RCA”&“i.地址”
如果结束
如果结束
接下来我
如果是“Msg”,则MsgBox Msg,VBE感叹号为“注意”
端接头
试试这个

Sub Msgbox_It()

    Dim sh As Worksheet
    Dim LstRw As Long
    Dim i As Range
    Dim FindRange As Range
    Dim Msg As String

    Set sh = Sheets("Sheet1")    'name of worksheet
    With sh
        LstRw = .Cells(.Rows.Count, "AB").End(xlUp).Row
        Set FindRange = .Range("AB2:AB" & LstRw)

        For Each i In FindRange
            If i = "RCA Pending" Then
                Msg = Msg & i.Address & vbNewLine
            End If
        Next i

        MsgBox "Found 'RCA Pending' in cell" & " " & Msg, vbExclamation, "Attention"
    End With
End Sub
试试这个

Sub Msgbox_It()

    Dim sh As Worksheet
    Dim LstRw As Long
    Dim i As Range
    Dim FindRange As Range
    Dim Msg As String

    Set sh = Sheets("Sheet1")    'name of worksheet
    With sh
        LstRw = .Cells(.Rows.Count, "AB").End(xlUp).Row
        Set FindRange = .Range("AB2:AB" & LstRw)

        For Each i In FindRange
            If i = "RCA Pending" Then
                Msg = Msg & i.Address & vbNewLine
            End If
        Next i

        MsgBox "Found 'RCA Pending' in cell" & " " & Msg, vbExclamation, "Attention"
    End With
End Sub

为什么
Chr(13)
?那不应该是
Chr(10)
?我道歉。显然,一个单独的
Chr(13)
也可以解释为下一行字符。@Jeeped,使用
Chr(13)
有什么问题吗?我在VBA中使用
Chr(13)
,在excel单元格中使用
Chr(10)
。不,它似乎可以解释为下一行字符,虽然严格来说,我不认为应该这样做。回车(例如
Chr(13)
)应始终伴随换行符(例如
Chr(10)
),但
Chr(10)
可以单独使用。它应该是
vbCrLf
vbLf
,而不是
vbCr
@Fadi谢谢,这非常有效。当我完成测试并向同事展示时,需求发生了变化……哈哈。现在,他们只需要计算“RCA待定”在该范围内出现的次数,而不需要每个人的地址。但你的回答对未来的需求很有参考价值。@IronMan,欢迎你。要计数,您可以使用
MsgBox WorksheetFunction.CountIf(列(“AB”),“RCA挂起”)
。为什么
Chr(13)
?那不应该是
Chr(10)
?我道歉。显然,一个单独的
Chr(13)
也可以解释为下一行字符。@Jeeped,使用
Chr(13)
有什么问题吗?我在VBA中使用
Chr(13)
,在excel单元格中使用
Chr(10)
。不,它似乎可以解释为下一行字符,虽然严格来说,我不认为应该这样做。回车(例如
Chr(13)
)应始终伴随换行符(例如
Chr(10)
),但
Chr(10)
可以单独使用。它应该是
vbCrLf
vbLf
,而不是
vbCr
@Fadi谢谢,这非常有效。当我完成测试并向同事展示时,需求发生了变化……哈哈。现在,他们只需要计算“RCA待定”在该范围内出现的次数,而不需要每个人的地址。但你的回答对未来的需求很有参考价值。@IronMan,欢迎你。要计数,您可以使用
MsgBox工作表function.CountIf(列(“AB”),“RCA待定”)
。谢谢您的回答。我选择了Fadi's,因为当我打开工作簿时它会工作,而这正是触发此sub所需的。虽然这是一个可靠的答案,但我还是投了你的一票。好的,只要把代码放在你的自动打开子程序中就行了?我会这样做,但请阅读我上面关于新需求更改的评论。谢谢你的回答。我选择了Fadi's,因为当我打开工作簿时它会工作,而这正是触发此sub所需的。虽然这是一个可靠的答案,但我还是投了你的一票。好吧,把代码放在你的自动打开子程序中?我会这样做,但请阅读我上面关于新需求更改的评论。