Live-Forum - Die aktuellen Beiträge
Datum
Titel
25.10.2025 08:21:40
24.10.2025 18:10:41
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Msgbox-Timer

Forumthread: Msgbox-Timer

Msgbox-Timer
02.10.2019 08:28:41
Peter
Servus Gemeinde,
gibt es die Möglichkeit einen Timer für eine Msgbox zu setzten, sodass nach einer halben Sekunde, dass Fenster automatisch geschlossen wird?
Folgenden Code habe ich schon gefunden, dieser funktioniert aber iwie nicht, da sich das Fenster nicht automatisch schließt.
Sub Error123()
Cancel = True
Dim i As Integer
i = CreateObject("WScript.Shell").PopUp("Error", 0.5, "Error")
End Sub

vielen Dank im voraus.
Gruß
Peter
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Msgbox-Timer
02.10.2019 08:44:06
Nepumuk
Hallo Peter,
ein Beispiel:
Option Explicit

Private Declare Function MessageBoxTimeoutA Lib "user32.dll" ( _
    ByVal hWnd As Long, _
    ByVal lpText As String, _
    ByVal lpCation As String, _
    ByVal uType As Long, _
    ByVal wLanguageId As Integer, _
    ByVal dwMiliseconds As Long) As Integer

Private Const MB_TIMEOUT As Long = &H7D00

Public Sub test()
    
    Dim intReturn As Integer
    
    intReturn = MessageBoxTimeoutA(Application.hWnd, "Hallo", _
        "TimeoutTest", vbYesNo Or vbInformation, 0, 5000) '5000 = 5 Sekunden
    
    Select Case Clng(intReturn)
        Case MB_TIMEOUT
            Debug.Print "TimeOut"
        Case vbOK, vbYes
            Debug.Print "Ok, Ja"
        Case vbAbort, vbCancel
            Debug.Print "Abrechen"
        Case vbNo
            Debug.Print "Nein"
        Case vbRetry
            Debug.Print "Wiederholen"
        Case Else
            Debug.Print intReturn
    End Select
End Sub

Gruß
Nepumuk
Anzeige
AW: Msgbox-Timer
02.10.2019 09:07:22
Torsten
Hallo Peter,
versuch mal:

Sub Error123()
Cancel = True
Dim i As Integer
i = CreateObject("WScript.Shell").PopUp("Error", 2, "Error")
End Sub
Gruss Torsten
AW: Msgbox-Timer
02.10.2019 09:12:28
Torsten
nein, geht nicht. Aber so:

Sub Error123()
Cancel = True
Dim i As Integer, iDauer as Integer
iDauer = 2
i = CreateObject("WScript.Shell").Popup("Error", iDauer, "Error")
End Sub

Gruss Torsten
Anzeige
;
Anzeige

Infobox / Tutorial

Msgbox mit Timer in VBA erstellen


Schritt-für-Schritt-Anleitung

Um eine Msgbox mit Timer in VBA zu erstellen, kannst Du die MessageBoxTimeoutA-Funktion aus der Windows API verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel, indem Du Alt + F11 drückst.

  2. Füge ein neues Modul hinzu:

    • Klicke im Menü auf Einfügen und wähle Modul.
  3. Deklariere die API-Funktion am Anfang des Moduls:

    Private Declare Function MessageBoxTimeoutA Lib "user32.dll" ( _
       ByVal hWnd As Long, _
       ByVal lpText As String, _
       ByVal lpCaption As String, _
       ByVal uType As Long, _
       ByVal wLanguageId As Integer, _
       ByVal dwMilliseconds As Long) As Long
  4. Erstelle eine Subroutine, um die Msgbox mit Timer anzuzeigen:

    Public Sub MsgboxMitTimer()
       Dim intReturn As Long
       intReturn = MessageBoxTimeoutA(Application.hWnd, "Hallo", "TimeoutTest", vbYesNo Or vbInformation, 0, 5000) '5000 = 5 Sekunden
       Select Case intReturn
           Case 0
               Debug.Print "TimeOut"
           Case vbOK, vbYes
               Debug.Print "Ok, Ja"
           Case vbAbort, vbCancel
               Debug.Print "Abbrechen"
           Case vbNo
               Debug.Print "Nein"
           Case vbRetry
               Debug.Print "Wiederholen"
           Case Else
               Debug.Print intReturn
       End Select
    End Sub
  5. Starte die Subroutine über den VBA-Editor oder eine Schaltfläche in Excel.


Häufige Fehler und Lösungen

  • Msgbox schließt sich nicht: Stelle sicher, dass Du die MessageBoxTimeoutA-Funktion richtig deklariert hast und die Millisekunden korrekt angegeben sind.
  • Falscher Datentyp: Überprüfe, ob die Variablen wie hWnd und dwMilliseconds den richtigen Datentyp haben.
  • Zugriffsprobleme auf die API: Möglicherweise musst Du die Makrosicherheit in Excel anpassen, um den Zugriff auf die API zu ermöglichen.

Alternative Methoden

Falls Du keine API verwenden möchtest, kannst Du auch VBScript nutzen, um eine Popup-Nachricht mit einem Timer zu erstellen:

Set objShell = CreateObject("WScript.Shell")
objShell.Popup "Nachricht", 5, "Titel", 64 ' 5 Sekunden

Diese Methode funktioniert jedoch nur außerhalb von Excel und ist nicht direkt in VBA implementierbar.


Praktische Beispiele

Hier sind zwei Beispiele, wie Du die Msgbox mit Timer in verschiedenen Szenarien nutzen kannst:

  1. Ein einfacher Fehlerhinweis:

    Public Sub FehlerHinweis()
       MessageBoxTimeoutA Application.hWnd, "Ein Fehler ist aufgetreten!", "Fehler", vbCritical, 0, 3000 ' 3 Sekunden
    End Sub
  2. Bestätigungsnachricht:

    Public Sub Bestätigung()
       Dim intReturn As Long
       intReturn = MessageBoxTimeoutA(Application.hWnd, "Möchten Sie fortfahren?", "Bestätigung", vbYesNo, 0, 10000) ' 10 Sekunden
    End Sub

Tipps für Profis

  • Nutze die vbInformation-Konstante für informative Meldungen und vbCritical für Fehlermeldungen.
  • Experimentiere mit verschiedenen Zeitwerten, um die Benutzererfahrung zu optimieren.
  • Berücksichtige, dass die Verwendung von API-Funktionen die Portabilität deiner Excel-Datei einschränken kann.

FAQ: Häufige Fragen

1. Kann ich die Zeit für die Msgbox ändern?
Ja, Du kannst die Millisekunden anpassen, indem Du den Wert in der MessageBoxTimeoutA-Funktion änderst.

2. Funktioniert dies in jeder Excel-Version?
Die Nutzung von API-Funktionen funktioniert in Excel-Versionen, die VBA unterstützen, ab Excel 2000.

3. Gibt es eine Möglichkeit, die Msgbox interaktiv zu gestalten?
Die Msgbox ist in dieser Form nicht interaktiv, aber Du kannst den Rückgabewert der Msgbox nutzen, um Entscheidungen in Deinem Code zu treffen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige