如何将所有消息框添加到VBA中的最终消息框?

任何人都可以帮助我们。 我们已经设法让VBA查看我们的数据,并find90天以上的门票。 但目前我们只能这样做,使每张票证都显示为一个明显的消息框。 是否有可能将所有的结果结尾到一个消息框,其中包含结果列表并计算find的结果总数? 我们正在使用的代码如下。

Sub LongerThan3Months() Dim lastrow As Long Dim i As Long Dim startdate As Date Dim datenow As Date Dim Ticket As String Dim days As Integer Dim n As Integer Sheets("Tickets").Select With ActiveSheet lastrow = .Cells(.Rows.Count, "B").End(xlUp).Row End With datenow = Date n = 0 For i = 4 To lastrow startdate = Range("B" & i).Value days = DateDiff("d", startdate, Now) If days >= 90 Then If Range("B" & i).offset(, 2).Value <> "Closed" Then n = n + 1 Ticket = Range("B" & i).offset(, 3).Value End If End If Next i MsgBox (n & " " & "Tickets have been open for over 90 days") End Sub 

你将要连接到一个string的resutlts。

在循环之外,你应该得到一个stringvariables。

  Dim msgStr as String Dim extraTickets as Long extraTickets = 0 

然后每次将Ticket字段连接到string。

  If Range("B" & i).offset(, 2).Value <> "Closed" Then n = n + 1 Ticket = Range("B" & i).offset(, 3).Value If n < 30 Then 'this will not happen on the 31st ticket. msgStr = msgStr & Ticket & vbcrlf End if End If 

vbcrlf是一个VB常量的Carriage Return, Line FeedCarriage Return, Line Feed本质上是回车键。 它会在显示屏上显示每一张票。

  MsgBox (n & " " & "Tickets have been open for over 90 days" & vbcrlf & vbcrlf & msgStr) 

尝试这个

  Dim msgall As String msgall = "" ... For i = 4 To lastrow ... If Range("B" & i).Offset(, 2).Value <> "Closed" Then N = N + 1 Ticket = Range("B" & i).Offset(, 3).Value msgall = msgall & <the message you want goes here> & vbCrLf End If ... Next i ... MsgBox msgall 

MsgBox可能太大,取决于您的情况。