将多个消息框值添加到vba中的单个消息框

时间:2013-04-30 10:34:51

标签: vba outlook-vba

我有这个代码,我可以在每个外部循环结束时显示消息。我想在假设数组或soome list结构中捕获所有这些消息,然后最后想要将这些消息显示到一个msgbox中。如果有人能帮助我,我将不胜感激。 谢谢。

For Each objNavFolder In objNavGroup.NavigationFolders
    SkippedItemCounter = 0
    If oItems.Count = 0 Then
        MsgBox "No Appointments items in " & objNavFolder.DisplayName & "'s folder"
    Else
        NextRow = NextRow + 1
        For Each MyItem In oItems
             If MyItem = "" Then
                 SkippedItemCounter = SkippedItemCounter + 1
             End If
             'some code here
        Next 
        Set objExpl = _colExpl.Add(objFolder, olFolderDisplayNormal)
        NextRow = NextRow - 1
    End If
    MsgBox "No. of items= "&SkippedItemCounter&"skipped from"&objNavFolder.DisplayName&""
Next 
End If
End If
End If

2 个答案:

答案 0 :(得分:2)

而不是调用msgboxes,创建一个String并继续添加消息 - 在代码msgbox(yourString)的末尾

例如,

decalare主子

之前的字符串
Dim yourFinalMessage As String ' or Dim yourFinalMessage$

而不是

MsgBox "No Appointments items in " & objNavFolder.DisplayName & "'s folder"

yourFinalMessage = yourFinalMessage & vbCrLf & & _ 
             "No Appointments items in " & objNavFolder.DisplayName & "'s folder"

继续这样做,直到循环结束。

在循环结束时说

msgbox YourFinalMessage 

答案 1 :(得分:0)

不确定是否完全理解您的需求,但您可能会尝试将其添加到模块中:

Option Explicit

Dim globalMsg as String
globalMsg = ""

Function customMsg(msg as String)
    MsgBox msg
    globalMsg = globalMsg & VbCrLf & msg
End Function

只需调用customMsg("Your Message")即可显示MsgBox,最后调用MsgBox globalMsg将所有消息显示为单个消息(每行一个)。还有很多其他方法可以做到这一点,这取决于你。如果您需要任何进一步的帮助,请更加明确。