Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1940to1944
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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
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

Links zu Excel-Dialogen

Anzeige

Infobox zum Thema

EXCEL - 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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige