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

Countdown Timer mit Massagebox

Forumthread: Countdown Timer mit Massagebox

Countdown Timer mit Massagebox
08.08.2023 10:05:31
Martina
Hallo,
ich habe eine Spezialfrage zum Erstellen eines Countdown-Timers mithilfe VBA.
Codes habe ich zwar schon einige im Netz gefunden, aber diese kann ich aufgrund fehlender Kenntnisse nicht an mein Beispiel anpassen; Hauptgrund ist meist der Start über einen Button mit zugewiesenem Modul - ich hätte aber gern einen Autostart, wenn in best. Zelle einer ausgewählten Spalte geschrieben wird.
Ich trage in einer Tabelle eine aktuelle Uhrzeit in Spalte B ein (bzw. mittels VBA Code wird die Uhrzeit automatisch eingetragen, wenn in Spalte B geschrieben wird (Code dazu unterbei).
In Spalte F wird derzeit die Endzeit (=Zeit Spalte B plus 150 Minuten) mittels WENN-Funktion eingetragen (=WENN(B39>0;B39+1/60/24*150;"--")).

Nun zur Frage: gibt es eine Möglichkeit, einen Countdowntimer automatisch zu starten, wenn entweder in Feld B oder F geschrieben wird?
Dieser soll im Hintergrund für 150 Minuten laufen und nach Beendigung sollte eine Massagebox auf dem Desktop aufploppen.
Zusatzinfo: es laufen immer mehrere Countdowns zur gleichen Zeit; die Massagebox sollte nur eine Erinnerung aufscheinen, Text kann immer gleich sein.

Ich würde mich sehr freuen, wenn mir jemand weiterhelfen könnte.
Vielen Dank vorab.
Martina

Code für Zeiteintragung in B:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim xRInt As Integer
Dim xDStr As String
Dim xFStr As String
On Error Resume Next
xDStr = "C" 'Data Column
xFStr = "A" 'Timstamp Column
If (Not Application.Intersect(Me.Range(xDStr & ":" & xDStr), Target) Is Nothing) Then
xRInt = Target.Row
Me.Range(xFStr & xRInt) = Format(Now(), "dd/mm/yyyy")
Me.Range("B" & xRInt) = Format(Now(), "hh:mm")

If Range("A" & xRInt + 1) = "" Then
Me.Range("B" & xRInt + 1).Value = "--" 'nächste Zeilen mit Wert vorbelegen
Me.Range("A" & xRInt + 1).Value = "--"
'Me.Range("C" & xRInt + 1).Value = "--"
'Me.Range("D" & xRInt + 1).Value = "--"
End If


End If
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Countdown Timer mit Massagebox
08.08.2023 10:48:33
Daniel
Hi

In einem Allgemeinen Modul:

Sub Erinnerung()

MsgBox "dein Text"
Ende Sub


Im Change-Event startest du dann dieses Makro mit 150 min Verzögerung:

Application.Ontime now + Timeserial(2, 30, 0), "Erinnerung"


Gruß Daniel
Anzeige
Countdown Timer mit Massagebox
08.08.2023 11:30:38
snb
Für ein MassageBox braucht man hier eine Genehmigung.
AW: Countdown Timer mit Massagebox
08.08.2023 10:59:56
Martina
Hallo Daniel,
danke für deine Nachricht!
Kurz noch eine Frage: wo lege ich die Spalte für den Start fest? Wie kann ich das in den Code reinschreiben?
AW: Countdown Timer mit Massagebox
08.08.2023 11:10:25
Herbert Grom
Hallo Martina,

If Target.Column = 5 then 

'Dein Code
EndIf


5 steht für Spalte E.

Servus
Anzeige
;
Anzeige

Infobox / Tutorial

Countdown Timer mit MessageBox


Inhaltsverzeichnis


Die Fragestellung


Du möchtest in Excel einen Countdown-Timer erstellen, der nach Ablauf eine MessageBox anzeigt.


Erläuterung des Problems {#erläuterung-des-problems}


Excel bietet keine eingebaute Countdown-Funktion. Ein Countdown-Timer kann jedoch mit VBA erstellt werden, indem die OnTime-Methode des Application-Objekts verwendet wird, um eine Prozedur zu einem bestimmten späteren Zeitpunkt auszuführen.


Lösung des Problems {#lösung-des-problems}


Hier ist ein einfaches VBA-Makro, das einen Countdown-Timer erstellt und nach Ablauf eine MessageBox anzeigt:

Sub StartCountdown()
    Dim CountdownTime As Double

    ' Setze die Countdown-Zeit (z.B. 10 Sekunden von jetzt)
    CountdownTime = Now + TimeValue("00:00:10")

    ' Plane die Anzeige der MessageBox für die Zukunft
    Application.OnTime EarliestTime:=CountdownTime, Procedure:="ShowMessage", Schedule:=True
End Sub

Sub ShowMessage()
    ' Zeige die MessageBox an, wenn der Countdown abgelaufen ist
    MsgBox "Der Countdown ist abgelaufen!"
End Sub

Um dieses Makro zu verwenden:

  1. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Wähle Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Kopiere den oben stehenden Code in das Modul.
  4. Schließe den VBA-Editor und gehe zurück zu Excel.
  5. Führe das Makro StartCountdown aus, indem du ALT + F8 drückst, das Makro auswählst und auf Ausführen klickst.

Anwendungsbeispiele aus der Praxis


  • Erinnerungsfunktion: Erinnere dich an bevorstehende Termine oder Fristen.
  • Zeitgesteuerte Aufgaben: Starte eine Aufgabe nach einer bestimmten Wartezeit.

Tipps


  • Stelle sicher, dass Excel während des Countdowns geöffnet bleibt, da sonst die OnTime-Methode nicht wie geplant ausgelöst wird.
  • Beachte, dass die OnTime-Methode den Timer nicht anhält, wenn Excel geschlossen wird. Du solltest eine Möglichkeit vorsehen, den Timer zu deaktivieren, falls nötig.

Verwandte Themenbereiche


  • VBA-Programmierung in Excel
  • Zeitgesteuerte VBA-Funktionen
  • Automatisierung von Benachrichtigungen

Zusammenfassung


Mit VBA kannst du in Excel einen Countdown-Timer erstellen, der nach Ablauf eine MessageBox anzeigt. Dies kann für Erinnerungen oder zeitgesteuerte Aufgaben innerhalb deiner Excel-Anwendung nützlich sein. Das obige Beispiel zeigt, wie du einen solchen Timer einrichten kannst, und kann als Ausgangspunkt für komplexere Timer-Funktionen dienen.

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