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.
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.