Schreibbüro Richter

MsgBox, die sich von allein schließt

In VBA kann man oft ein Meldungsfenster zur Anzeige gebrauchen, das man nicht erst durch Mausklick oder Betätigen der Entertaste schließen will, weil keine weitere Benutzerinteraktion erforderlich ist. Mit der in VBA integrierten MsgBox ist dies nicht möglich. Der Windows Script Host jedoch bietet solche Popup-Fenster. Es liegt also nahe, ein solches Fenster als selbstschließende MsgBox in eine VBA-Prozedur zu kapseln, die man einfach seinen Projekten hinzufügt oder in seiner eigenen Bibliothek unterbringt. Das MsgFenster sieht einer normalen MsgBox sehr ähnlich.

Selbstschließendes MsgFenster

Falls man tatsächlich auf einen PC ohne WSH trifft, wird einfach eine normale MsgBox ausgegeben.


Public Sub MsgFenster(strPrompt As String, _ 
                      Optional lngAnzeigezeit As Long = 1, _ 
                      Optional intSymbol As Integer = vbInformation) 

    Dim strUeberschrift As String
    Dim objShell As Object
    On Error Resume Next
    ' check if Windows Scripting Host Installed  
    Set objShell = CreateObject("WScript.Shell")
    If Not IsObject(objShell) Then
        'falls WSH nicht installiert ist, MsgBox nehmen!  
        MsgBox strPrompt, Buttons:=intSymbol
    Else
        Select Case intSymbol
          Case vbQuestion:    strUeberschrift = "Frage"
          Case vbExclamation: strUeberschrift = "Achtung"
          Case vbInformation: strUeberschrift = "Information"
          Case Else:          strUeberschrift = "Fehler"
        End Select
        objShell.PopUp strPrompt, lngAnzeigezeit, strUeberschrift, intSymbol
        Set objShell = Nothing
    End If
    On Error GoTo 0

End Sub  

Der Aufruf erfolgt ganz analog einer MsgBox:


Sub Testaufruf()  

    MsgFenster "Alle Dateien wurden ordentlich gespeichert.", 2, vbInformation

End Sub  

Falls man ein Meldungsfenster benötigt, das vom Nutzer nicht reflexmäßig weggeklickt werden kann, kann man dafür eine Userform verwenden: → Userform als Hinweis einblenden, der sich zeitgesteuert schließt und vom Benutzer nicht weggeklickt werden kann.