VBA Tipp: Eine Meldung zeitgesteuert anzeigen

Aus DBWiki
Wechseln zu: Navigation, Suche

Anforderung

Ich möchte eine Meldung auf dem Bildschirm anzeigen, die sich nach einer vorgegebenen Zeit automatisch wieder schließt.

Lösung 1

  • Ich erstelle mir ein Popupformular mit einem Textfeld, das durch das Timer-Ereignis des Formulars gesteuert wird.
  • Eine Datenbank mit einem fertigen Beispiel kann hier heruntergeladen werden: Datei:Timerbox.zip.

Lösung 2

Verwendung der Popup-Methode des Windows Scripting Host.

  • Die Meldung enthält eine (eventuell unerwünschte) OK-Schaltfläche.
  • Das TimerIntervall kann nur in ganzen Sekunden angegeben werden.
  • Bei Timerintervall 0 bleibt die Meldung auf dem Bildschirm stehen, und verhält sich wie eine normale MsgBox.
Public Sub MeldungAnzeigen(Meldung As String, _
                           Optional ByVal TimerIntervall_sec As Long, _
                           Optional ByVal Titel As String, _
                           Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly)
 
   'Late Binding: Kein Verweis auf "Microsoft Scripting Runtime" und
   'kein Verweis auf "Windows Script Host Object Model" notwendig
 
   'Quelle: http://www.dbwiki.net/
 
   Const ForWriting As Long = 2
 
   Dim FSO       As Object 'IWshRuntimeLibrary.FileSystemObject
   Dim WSH       As Object 'IWshRuntimeLibrary.WshShell (Windows Scripting Host)
   Dim Datei     As Object 'TextStream
   Dim tempDatei As String
 
   Set FSO = CreateObject("Scripting.FileSystemObject")
   Set WSH = CreateObject("WScript.Shell")
 
   'Der Name der vbs-Datei ist egal, nur die Dateiendung .vbs ist wichtig
   tempDatei = "MeldungAnzeigen.vbs"
   Set Datei = FSO.OpenTextFile(tempDatei, ForWriting, True)
 
   With Datei
      .WriteLine "Dim ObjShell"
      .WriteLine "Set ObjShell = CreateObject(""WScript.Shell"")"
      .WriteLine "ObjShell.Popup """ & Meldung & """," & _
                                       TimerIntervall_sec & ",""" & _
                                       Titel & """, " & _
                                       Buttons
      .WriteLine "Set ObjShell = Nothing"
      .Close
   End With
 
   'vbs-Datei ausführen
   WSH.Run tempDatei, , True
 
   'temporäre Datei löschen
   FSO.DeleteFile tempDatei, True
 
End Sub

Aufruf Lösung 2

   'Beispiel 1: Meldung, ohne Titel, 2 Sekunden anzeigen
   Call MeldungAnzeigen("Ich bin in 2 Sekunden weg.", 2)
 
   'Beispiel 2: Meldung, mit Titel, mit Informations-Symbol, 3 Sekunden anzeigen
   Call MeldungAnzeigen("Ich bin in 3 Sekunden weg.", 3, "Mein Titel", vbInformation)

Wikilinks

Datei:Timerbox.zip Timer-gesteuertes, selbst erstelltes Popup-Formular, das eine Meldung auf dem Bildschirm anzeigt, und sich nach einer vorgegebenen Zeit automatisch schließt.