Userform als Hinweis einblenden, der sich zeitgesteuert schließt und vom Benutzer nicht weggeklickt werden kann

Zur Benutzerführung möchte man gelegentlich einen Hinweis einblenden, der sich nach einer bestimmten Zeit von allein schließt. Dafür kann man die → selbstschließende MsgBox verwenden. Möchte man jedoch erreichen, dass sie eine gewisse Zeit angezeigt wird, ohne dass der Nutzer die Meldung vorzeitig (z. B. reflexartig) wegklicken kann, kann man dafür eine Userform verwenden, die nur eine Meldung ausgibt und sich dann selbst wieder schließt. Natürlich kann man die Userform auch farblich ansprechend gestalten, so dass sie sich von einer üblichen normalen MsgBox oder einer normalen Userform abhebt.

Ähnlich wie bei der selbstschließenden MsgBox ist der Aufruf in eine Funktion gekapselt, der man den anzuzeigenden Text, die Zeit für die Anzeige und optional einen Titel als Argumente übergeben kann.


Code im Modul der Userform:


Option Explicit
Public sngAnzeigezeit As Single
Private Sub UserForm_Activate() Dim sngStart As Single Dim sngZiel As Single sngStart = Timer Do sngZiel = Timer DoEvents Loop Until sngZiel > sngStart + sngAnzeigezeit Unload Me End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) Cancel = CloseMode <> vbFormCode 'Um das Schließen-Kreuz zu deaktivieren End Sub

Code in einem normalen Modul:


Function fktMeldungNichtWegklickbar(ByVal strAusgabe As String, _  
                                 ByVal sngZeit As Single, _  
                                 Optional ByVal varTitle As Variant)  
    Dim myForm As frmMeldung
    Dim strTitle As String

    If IsMissing(varTitle) Then
        strTitle = "Selbstschließende Meldung"
    Else
        strTitle = CStr(varTitle)
    End If

    Set myForm = New frmMeldung

    With myForm
        .sngAnzeigezeit = sngZeit
        .Caption = strTitle
        .lblAusgabe = strAusgabe
        .Show
    End With
    Set myForm = Nothing
End Function  
            

Meldung komfortabel aufrufen:


Sub TestDerFunktion()  
    Call fktMeldungNichtWegklickbar _
        (strAusgabe:="Diese Meldung schließt sich selbst, " & vbCrLf & _
        "ohne dass man sie wegklicken könnte.", _
        sngZeit:=3, _
        varTitle:=CVar("Test der selbstschließenden Funktion"))
End Sub  
            
Schreibbüro Richter, Georg-Schumann-Str. 8, 04105 Leipzig, Tel.: (03 41) 59 008 95