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

ma2*_*268 0 excel vba excel-vba

任何人都可以帮助我们.我们设法让VBA查看我们的数据并查找已打开超过90天的门票.但目前我们只能这样做,以便每张票都显示为一个sepparate消息框.是否可以将最后的所有结果合并到一个消息框中,该消息框包含结果列表并计算找到的结果总数?我们使用的代码如下.

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
Run Code Online (Sandbox Code Playgroud)

Bmo*_*Bmo 6

您将要将resutlts连接成一个字符串.

在循环之外,你应该得到一个字符串变量.

  Dim msgStr as String
  Dim extraTickets as Long

  extraTickets = 0
Run Code Online (Sandbox Code Playgroud)

然后Ticket每次将字段的串联添加到字符串.

   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
Run Code Online (Sandbox Code Playgroud)

对于输入键,它vbcrlf是一个VB常量Carriage Return, Line Feed.它将在显示屏中为每张票提供自己的一行.

 MsgBox (n & " " & "Tickets have been open for over 90 days" & vbcrlf & vbcrlf & msgStr)
Run Code Online (Sandbox Code Playgroud)