Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Sich selbst schließende Msgbox mit OK u. Abbrechen | Herbers Excel-Forum

Forumthread: Sich selbst schließende Msgbox mit OK u. Abbrechen

Sich selbst schließende Msgbox mit OK u. Abbrechen
11.01.2010 20:06:13
Martin S.

Hallo,
folgenden Code habe ich gefunden, um eine MsgBox nach einer bestimmten Zeit (in dem Fall 10 Sekunden) wieder schließen zu lassen:

Sub MsgZeit()
'   Blendet eine Msgbox nach 10 Sekunden automatisch wieder aus
'   von K.Rola
'   kein Verweis notwendig
Const bytZeit As Byte = 10
Dim objWSH As Object, intMSG As Integer
Set objWSH = CreateObject("WScript.Shell")
intMSG = objWSH.Popup("Ich bin in " & bytZeit & " Sekunden verschwunden!" & Space(10),  _
bytZeit, "gebe bekannt...")
Set objWSH = Nothing
End Sub
Gibt es eine Möglichkeit, dass ich neben dem OK-Button noch einen Abbrechen (Cancel)-Button in die MsgBox integriere und das Ergebnis abfragen kann? Ich möche, dass der Nutzer die Chance erhält einen zeitaufwendigen Vorgang abzubrechen, bevor dieser automatisch erfolgt?
Viele Grüße
Martin

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sich selbst schließende Msgbox mit OK u. Abbrechen
11.01.2010 20:16:09
Josef Ehrensberger
Hallo Martin,
Sub MsgZeit()
  ' Blendet eine Msgbox nach 10 Sekunden automatisch wieder aus
  ' von K.Rola
  ' kein Verweis notwendig
  Const bytZeit As Byte = 3
  Dim objWSH As Object, intMSG As Integer
  
  Set objWSH = CreateObject("WScript.Shell")
  
  intMSG = objWSH.Popup("Ich bin in " & bytZeit & " Sekunden verschwunden!" & _
    Space(10), bytZeit, "gebe bekannt...", 1)
  
  If intMSG = 2 Then
    MsgBox "Abbrechen"
  Else
    MsgBox "OK"
  End If
  
  Set objWSH = Nothing
End Sub

Infos zum letzten Parameter "Format" findest du z.B. hier: DevGuru
Gruß Sepp
Anzeige
AW: Sich selbst schließende Msgbox mit OK u. Abbrechen
11.01.2010 20:26:26
Hajo_Zi
Halo Martin,
versuch es so.
Option Explicit
Sub MsgZeit()
'   Blendet eine Msgbox nach 10 Sekunden automatisch wieder aus
'   von K.Rola
'   kein Verweis notwendig
Const bytZeit As Byte = 10
Dim objWSH As Object, intMSG As Integer
Set objWSH = CreateObject("WScript.Shell")
intMSG = objWSH.Popup("Ich bin in " & bytZeit & " Sekunden verschwunden!" & Space(10), _
bytZeit, "gebe bekannt...", vbOKCancel + vbQuestion)
Set objWSH = Nothing
End Sub
Gruß Hajo
Anzeige
Vielen Dank Euch beiden, so ist es super!
11.01.2010 21:11:08
Martin S.
Vielen Dank Euch beiden, so ist es super!
Zeit ablaufen lassen
11.01.2010 21:37:44
Karl
Hallo,
ich habe gerade diesen Beitrag gefunden. Funktioniert echt super! Hat man auch die Möglichkeit, dass die Zeit rückwärts auf der MsgBox abläuft (10, 9, 8....)?
Gruß Karl
Weitere Frage: Geht es auch mit Countdown?
11.01.2010 21:54:51
Martin S.
Obwohl meine eigentlich Forumsfrage bereits erfolgreich beantwortet wurde, schließe ich mich der Frage von Karl an uns setzte den Status auf "Frage noch offen". Wäre ein Countdown in der MsgBox eventuell wirklich möglich? Das wäre ja spitze, wenn das auch noch ginge.
Viele Grüße
Martin
Anzeige
AW: Weitere Frage: Geht es auch mit Countdown?
11.01.2010 22:25:44
Ramses
Hallo
Zeig statt der MsgBox eine UF an mit einem Textfeld in das du die Uhrzeit reinschreibst.
Diese kannst du ja rekursiv jede Sekunde aufrufen und aktualisieren.
gruss Rainer
AW: Weitere Frage: Geht es auch mit Countdown?
11.01.2010 22:32:52
Martin S.
Hallo Rainer,
ich hatte schon vermutet, dass das nur über eine UserForm realisiert werden kann. Die MsgBox-Lösung gefällt mir ganz gut, so wichtig ist der Countdown nun auch wieder nicht.
Viele Grüße
Martin
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Sich selbst schließende MsgBox mit OK und Abbrechen


Schritt-für-Schritt-Anleitung

Um eine selbst schließende MsgBox in Excel VBA zu erstellen, die nach einer bestimmten Zeit automatisch verschwindet und zusätzlich die Möglichkeit bietet, mit einem Abbrechen-Button zu reagieren, folge diesen Schritten:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Füge ein neues Modul hinzu, indem du im Projektfenster mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsm)“ klickst und „Einfügen“ > „Modul“ wählst.

  3. Kopiere den folgenden VBA-Code in das Modul:

    Sub MsgZeit()
       ' Blendet eine Msgbox nach 10 Sekunden automatisch wieder aus
       Const bytZeit As Byte = 10
       Dim objWSH As Object, intMSG As Integer
       Set objWSH = CreateObject("WScript.Shell")
       intMSG = objWSH.Popup("Ich bin in " & bytZeit & " Sekunden verschwunden!", bytZeit, "gebe bekannt...", vbOKCancel + vbQuestion)
    
       If intMSG = 2 Then
           MsgBox "Abbrechen"
       Else
           MsgBox "OK"
       End If
    
       Set objWSH = Nothing
    End Sub
  4. Schließe den VBA-Editor und führe das Makro MsgZeit aus.

Diese Schritte erstellen eine MsgBox, die nach 10 Sekunden automatisch geschlossen wird, es sei denn, der Nutzer klickt auf „Abbrechen“.


Häufige Fehler und Lösungen

  • Fehler: MsgBox wird nicht wie erwartet angezeigt.

    • Lösung: Stelle sicher, dass du den richtigen Code kopiert hast und dass das Makro korrekt ausgeführt wird.
  • Fehler: Die Zeit für das Schließen der MsgBox scheint nicht zu funktionieren.

    • Lösung: Überprüfe den Wert von bytZeit und passe ihn an, um eine kürzere oder längere Zeit zu testen.

Alternative Methoden

Anstelle einer MsgBox kannst du auch eine UserForm verwenden, um ein anpassbares Countdown-Display zu erstellen. Hier ist eine einfache Methode:

  1. Erstelle eine UserForm mit einem Textfeld, um den Countdown anzuzeigen.
  2. Verwende eine Schleife, um den Countdown in Sekunden zu aktualisieren. Dies kann jedoch komplexer sein, wenn du den Code für die UserForm benötigst.

Praktische Beispiele

Hier ist ein Beispiel, wie du die MsgBox in einer praktischen Anwendung verwenden kannst:

Sub Beispiel()
    MsgZeit
    ' Weitere Aktionen nach der MsgBox
End Sub

Das obige Beispiel ruft die MsgZeit-Prozedur auf, die die selbst schließende MsgBox zeigt. Du kannst diese Technik in verschiedenen Anwendungen verwenden, um Benutzerinteraktionen zu steuern.


Tipps für Profis

  • Nutze vbOKCancel in Kombination mit vbQuestion, um die Benutzererfahrung zu verbessern. Es zeigt ein Fragezeichen-Symbol in der MsgBox an, das besser zu Entscheidungsfragen passt.
  • Experimentiere mit der Zeitdauer der MsgBox, um herauszufinden, was für deine Benutzer am besten funktioniert.
  • Du kannst den Text in der MsgBox dynamisch ändern, basierend auf vorherigen Benutzereingaben.

FAQ: Häufige Fragen

1. Wie kann ich die MsgBox länger anzeigen?
Du kannst den Wert von bytZeit erhöhen, um die Zeit zu verlängern.

2. Ist es möglich, einen Countdown in der MsgBox zu zeigen?
Die MsgBox selbst unterstützt keinen Countdown, aber du kannst eine UserForm verwenden, um dies zu realisieren.

3. Was passiert, wenn ich auf „Abbrechen“ klicke?
Wenn der Nutzer auf „Abbrechen“ klickt, wird eine weitere MsgBox mit der Nachricht „Abbrechen“ angezeigt.

4. Funktioniert dieser Code in allen Excel-Versionen?
Ja, dieser VBA-Code sollte in den meisten modernen Excel-Versionen funktionieren, die VBA unterstützen.

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