Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Countdown Timer VBA

Countdown Timer VBA
09.02.2009 15:33:00
Gernot
Hallo Leute,
habe einen Countdown Timer in Userform, bei dem Stunden, Minuten und Sekunden separat
eingestellt werden(max. 23:59:59).
Habe auch einen Timer mit Api gefunden, der sekundenweise runterzählt. Nun soll die Restzeit
in einem Label im Format hh:mm:ss angezeigt werden und das bekomm ich nicht hin.
Bis etwas über 8 Stunden kann ich die Sekunden mit TimeSerial(0, 0, intSekunden) runterzählen,
aber da die Parameter Stunden, Minuten und Sekunden wohl Integer sind crasht die Sache
bei etwas über 8 Stunden.
Freue mich über Alternativen.
Grüße Gernot
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Countdown Timer VBA
09.02.2009 16:51:00
Ramses
Hallo
Definiere die Sekunden als Long,... dann sollte das hinhauen
Gruss Rainer
AW: Countdown Timer VBA
09.02.2009 16:59:00
Gernot
Hallo Ramses,
danke, auf diese Idee bin ich auch schon gekommen, leider bringt das nichts, weill die
drei Argumente innerhalb der TimeSerial-Funktion als Integer definiert sind.
Grüße Gernot
noch offen oT
09.02.2009 17:01:24
Gernot
oT
Anzeige
AW: Countdown Timer VBA
09.02.2009 17:19:00
Ramses
Hallo
"...weill die drei Argumente innerhalb der TimeSerial-Funktion als Integer definiert sind...."
Das ist doch Quatsch.
zeig mal deinen Code den zu bisher hast, oder lade mal eine Beispieldatei hoch.
Gruss Rainer
noch offen mT
09.02.2009 18:02:55
Gernot
Hallo Ramses,
was ist dir denn für eine Laus durchs Hirn gelaufen?
Schau in die Hilfe zu TimeSerial, da stets.
Bitte von dir keine weiteren Antworten.
Grüße Holger
Anzeige
Noch offen...
09.02.2009 19:05:42
Ramses
Hallo
"...Schau in die Hilfe zu TimeSerial, da stets...:"
Interessiert mich das wenn ich von dir den code für den Stepdown Timer fordere ?
Wer unbelehrbar ist muss selber sehen wie er durch kommt.
"...Bitte von dir keine weiteren Antworten...."
Kein Bange, kriegst du auch nicht.
Die 5 Varianten für so einen StepDownTimer die ich habe, kriegst du allerdings dann auch nicht.
Gruss Rainer
Anzeige
AW: noch offen mT
09.02.2009 19:06:00
Ingo
hallo Gernot oder Holger,
was bist denn Du für ein Sensibelchen ? Sei doch froh , wenn Dir Leute helfen wollen.
Untenstehende Funktion rechnet Dir Deine Sekunden in Stunden und Minuten um, das sollte helfen, wenn ich das Problem richtig verstanden habe.

Function uhrzeit(sekunden As Long) As Date
Dim lngmm As Long, inthh As Long, intss As Integer, intmm As Integer
inthh = WorksheetFunction.RoundDown(sekunden / 60 / 60, 0)
lngmm = sekunden - inthh * 60 * 60
intmm = WorksheetFunction.RoundDown(lngmm / 60, 0)
intss = sekunden - inthh * 60 * 60 - intmm * 60
uhrzeit = TimeSerial(inthh, intmm, intss)
End Function


Ingo Christiansen

Anzeige
Nicht mehr offen mT
09.02.2009 19:23:00
Gernot
Hallo Ingo,
danke, das passt.
Bin gar nicht sensibel, nur wenn Ramses bestreitet, dass die Argumente von TimeSerial
Intergerwerte sind, hat er keine richtige Lust, meine Frage zu beantworten.
grüße Gernot
Was soll das...
09.02.2009 19:29:10
Ramses
Hallo
Jetzt muss ich ganz höflich bleiben.,....
Das Passt ?
"sekunden As Long" !!!
Wenn du keine Ahnung hast von dem was du schreibst,... solltest du vorsichtiger sein mit deinen Äusserungen
Endgültig Ende dieses Beitrages der zum vergessen ist
Gruss Rainer
Anzeige
AW: Was soll das...
09.02.2009 20:26:00
Gernot
Hallo Ramses,
du hast dir wohl nicht mal die Mühe gemacht, die Function wenigstens mal anzusehen,
sonst hättest du bemerkt, dass die Gesamtsekunden, die logischer Weise Long sein müssen,
weil 86399 nicht von Integer abgedeckt werden, in Interwerte zerlegt werden und somit
von TimeSerial verarbeitet werden können.
Entweder hast du einen rabenschwarzen Tag oder schlicht keine Ahnung.
Grüße Gernot
Anzeige
Eigentlich ist hier ein Kommentar überflüssig...
10.02.2009 01:05:00
Ramses
Hallo
...aber den Schwachsinn kann ich so einfach nicht stehen lassen:
Wenn du von Geamtsekunden über 24 Stunden ausgehst und ich sage, die müssen als LONG definiert werden, laberst du mir etwas vor von wegen DateSerial und Integer vor.
Du zeigst noch nicht mal "deinen" VBA-Counter, ... sollen wir vielleicht hellsehen WIE du rechnest?
Dass die LONG Sekunden heruntergerechnet werden müssen auf TimeSerial ist, wie du ja endlich so schön begriffen hast, logisch, nur dass diese Werte keine Integerwerte sein müssen, sondern simple Byte-Werte ausreichend sind.
LONG Sekunden können auch noch auf andere Weise in Uhrzeiten umgerechnet werden
Counter können auf verschiedene Varianten gerechnet werden.
Und TimeSerial,... nur weil du DIESE Funktion gerade kennst, ist nicht zwingend nötig
Aber was solls,... Ende der Diskussion.
By the way:
"...Entweder hast du einen rabenschwarzen Tag oder schlicht keine Ahnung...."
Keines von beiden trifft zu.
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Countdown Timer mit VBA in Excel erstellen


Schritt-für-Schritt-Anleitung

Um einen Excel VBA Countdown Timer zu erstellen, folge diesen Schritten:

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

  2. Erstelle ein neues Modul:

    • Klicke im Menü auf Einfügen und wähle Modul.
  3. Füge den folgenden Code ein:

    Dim TimerRunning As Boolean
    Dim TotalSeconds As Long
    
    Sub StartCountdown(seconds As Long)
       TotalSeconds = seconds
       TimerRunning = True
       RunTimer
    End Sub
    
    Sub RunTimer()
       Dim hh As Long, mm As Long, ss As Long
       If TimerRunning Then
           If TotalSeconds > 0 Then
               hh = TotalSeconds \ 3600
               mm = (TotalSeconds Mod 3600) \ 60
               ss = TotalSeconds Mod 60
               ' Hier Label aktualisieren (z.B. Label1.Caption)
               Label1.Caption = Format(hh, "00") & ":" & Format(mm, "00") & ":" & Format(ss, "00")
               TotalSeconds = TotalSeconds - 1
               Application.OnTime Now + TimeValue("00:00:01"), "RunTimer"
           Else
               TimerRunning = False
               MsgBox "Countdown beendet!"
           End If
       End If
    End Sub
    
    Sub StopCountdown()
       TimerRunning = False
    End Sub
  4. Füge ein Label in deine Userform ein, um die Zeit anzuzeigen.

  5. Rufe die StartCountdown-Subroutine auf und übergebe die gewünschte Anzahl an Sekunden.


Häufige Fehler und Lösungen

  • Fehler: "Timer läuft nicht"
    Lösung: Stelle sicher, dass die Variable TimerRunning auf True gesetzt ist und die Methode RunTimer korrekt aufgerufen wird.

  • Fehler: Zeitformat wird nicht korrekt angezeigt
    Lösung: Überprüfe, ob das Label korrekt aktualisiert wird. Achte darauf, dass du die Format-Funktion richtig anwendest.

  • Fehler: Countdown stoppt nach 8 Stunden
    Lösung: Verwende Long für die Sekunden, um sicherzustellen, dass Werte über 24 Stunden korrekt verarbeitet werden.


Alternative Methoden

Es gibt verschiedene Ansätze, um einen Countdown Timer in Excel zu erstellen:

  • Verwendung von API-Funktionen: Du kannst API-Funktionen nutzen, um einen Timer zu erstellen, der sekundenweise runterzählt.
  • Excel Formeln: Ein einfacher Countdown lässt sich auch mit Excel-Formeln und bedingter Formatierung umsetzen, obwohl dies weniger flexibel ist als VBA.

Praktische Beispiele

Hier ist ein praktisches Beispiel, wie der VBA Countdown Timer in einer Userform implementiert werden kann:

  1. Erstelle eine Userform mit einem Label und zwei Schaltflächen (Start und Stop).
  2. Verwende den oben gegebenen Code, um die Countdown-Logik zu implementieren.
  3. Rufe die StartCountdown-Subroutine mit einer gewünschten Zeit (z.B. 3600 für 1 Stunde) auf, wenn die Start-Schaltfläche gedrückt wird.

Tipps für Profis

  • Timer-Format anpassen: Experimentiere mit dem vba timer format, um die Anzeige der Zeit zu verändern.
  • Fehlerbehandlung einfügen: Implementiere Fehlerbehandlungsroutinen in deinem Code, um unerwartete Fehler elegant zu handhaben.
  • Interaktive Userform erstellen: Nutze Steuerelemente wie Schieberegler, um die Eingabe der Countdown-Zeit zu erleichtern.

FAQ: Häufige Fragen

1. Wie kann ich den Countdown timer in VBA anpassen?
Du kannst die Dauer des Countdowns ändern, indem du den Parameter in der StartCountdown-Subroutine anpasst.

2. Was mache ich, wenn der Countdown nicht korrekt zählt?
Überprüfe, ob die Variable TimerRunning korrekt gesetzt wird und die Application.OnTime-Methode richtig funktioniert.

3. Ist es möglich, einen Weihnachts-Countdown mit Excel zu erstellen?
Ja, du kannst eine Zielzeit für Weihnachten festlegen und den Countdown entsprechend anpassen, um einen Weihnachts-Countdown mit Excel zu erstellen.

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