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

Forumthread: Timer zurücksetzen

Timer zurücksetzen
Reinhard
Hallo Wissende,
wenn ich meinen Betreff oben bei Schnellsuche eingebe kommt leider kein Treffer :-(
Aufgabe, Mappen sollen geschlossen werden wenn x Sekunden nix mehr geschah, dann soll noch ein Hinweis kommen, machen sie irgendwas oder Mappe wird geschlossen.
Ich habe mir nun gedacht, ich starte im Open-Ereignis einen Timer der nach x Sekunden dann das Beendigungsmakro aufruft.
Jedes Change oder Selectionchange-Ereignis soll dann den Timer zurücksetzen/neu starten.
Der Plan ist sicher gar nicht so schlecht aber ich scheitere schon an der ersten Hürde.
Wie "resete" ich denn einen Timer?
Nur um allein dies zu testen habe ich eine UF mit zwei Commandbuttons gebastelt,
folgender Code:
Private Sub CommandButton1_Click()
Application.OnTime Now + TimeValue("00:00:10"), "tt"
End Sub

Private Sub CommandButton2_Click()
Application.OnTime Now + TimeValue("00:00:10"), "tt", False
End Sub
Klappt natürlich nicht wenn ich CB2 nach 3 Sekunden klicke, ich dachte dieses "Schedule" = False stoppt zumindest den Timer, leider nein.
Wahrscheinlich wieder mal F1 nicht kapiert *seufz*
Hinweise auf bessere Suchwörter helfen mir auch weiter.
Danke ^ Gruß
Reinhard
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Timer zurücksetzen
03.09.2009 19:39:35
Reinhard
Hallo Hajo,
Klasse, danke.
Ich gebe deinen Link weiter, ich gehe davon aus daß ich das darf.
Aus Interesse schaue ich mir den Code an um herauszufinden wie du das angegangen bist.
Gruß
Reinhard
Anzeige
AW: Timer zurücksetzen
03.09.2009 19:42:44
Hajo_Zi
Halo Reinhard,
meine HP ist öffentlich, da kann jeder drauf gehen und runterladen was er will.
Gruß Hajo
AW: Timer zurücksetzen
04.09.2009 09:26:54
JogyB
Hi.
Als Anmerkung wo Dein Fehler liegt: Der Timer wird nach der Zeit identifiziert. Wenn Du die beiden Buttons nicht in derselben Sekunde drückst, dann sind die Zeitangaben unterschiedlich. Du mußt die Ausführungszeit für den Timer also erst in eine globale Variable schreiben und die dann in beiden Application.OnTime Kommandos verwenden.
Sieht dann so aus:
Dim myTimer As Date
Private Sub CommandButton1_Click()
myTimer = Now + TimeSerial(0, 0, 5)
Application.OnTime myTimer, "tt"
End Sub
Private Sub CommandButton2_Click()
On Error Resume Next
Application.OnTime myTimer, "tt", , False
On Error GoTo 0
End Sub
Die Fehlerbehandlung ist nötig, damit keine Fehlermeldung kommt, falls der CommandButton2 bei nicht laufendem Timer gedrückt wird.
Gruss, Jogy
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Timer in Excel zurücksetzen: Ein Leitfaden


Schritt-für-Schritt-Anleitung

  1. Timer initialisieren: Verwende eine globale Variable, um den Timer zu speichern. Dies gewährleistet, dass beide Buttons auf denselben Timer zugreifen können.

    Dim myTimer As Date
  2. Start des Timers: Im Click-Ereignis des ersten CommandButtons startest du den Timer.

    Private Sub CommandButton1_Click()
       myTimer = Now + TimeSerial(0, 0, 5) ' Timer auf 5 Sekunden setzen
       Application.OnTime myTimer, "tt"
    End Sub
  3. Timer zurücksetzen: Im Click-Ereignis des zweiten CommandButtons stoppst du den Timer. Achte darauf, dass du eine Fehlerbehandlung einfügst, falls der Timer nicht läuft.

    Private Sub CommandButton2_Click()
       On Error Resume Next
       Application.OnTime myTimer, "tt", , False
       On Error GoTo 0
    End Sub
  4. Makro zur Timer-Aktion: Definiere das Makro tt, das nach Ablauf des Timers ausgeführt wird.

    Sub tt()
       MsgBox "Timer abgelaufen!"
       ' Hier kannst du weitere Aktionen hinzufügen
    End Sub

Häufige Fehler und Lösungen

  • Timer lässt sich nicht zurücksetzen: Stelle sicher, dass du die globale Variable myTimer sowohl für das Starten als auch für das Stoppen des Timers verwendest.

  • Fehlermeldungen beim Stoppen des Timers: Verwende On Error Resume Next, um zu verhindern, dass Fehlermeldungen angezeigt werden, wenn du versuchst, einen bereits abgelaufenen Timer zu stoppen.


Alternative Methoden

Wenn du keine globale Variable verwenden möchtest, kannst du auch die Worksheet-Events nutzen, um den Timer zurückzusetzen. Diese Methode ist jedoch etwas komplexer und erfordert ein tieferes Verständnis von VBA.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du den Timer in Excel verwenden kannst, um eine Excel-Datei automatisch zu schließen, wenn keine Änderungen innerhalb einer bestimmten Zeit vorgenommen werden:

Dim CloseTimer As Date

Sub StartCloseTimer()
    CloseTimer = Now + TimeSerial(0, 1, 0) ' 1 Minute Timer
    Application.OnTime CloseTimer, "CloseWorkbook"
End Sub

Sub CloseWorkbook()
    MsgBox "Die Datei wird geschlossen, da keine Aktivität stattfand."
    ThisWorkbook.Close SaveChanges:=False
End Sub

Sub ResetCloseTimer()
    On Error Resume Next
    Application.OnTime CloseTimer, "CloseWorkbook", , False
    StartCloseTimer
End Sub

Tipps für Profis

  • Ereignissteuerung: Nutze Excel-Ereignisse wie Change und SelectionChange, um den Timer bei jeder Änderung zurückzusetzen. Dadurch wird der Timer nur dann aktiv, wenn der Benutzer in der Datei arbeitet.

  • Testen und Anpassen: Teste deine Timer-Implementierung gründlich und passe die Zeit an deine Bedürfnisse an.


FAQ: Häufige Fragen

1. Wie kann ich den Timer in Excel VBA nutzen?
Um den Timer zu nutzen, musst du das Application.OnTime-Objekt verwenden, um einen Timer zu erstellen, der eine bestimmte Funktion nach Ablauf der Zeit aufruft.

2. Was passiert, wenn ich den Timer nicht zurücksetze?
Wenn der Timer nicht zurückgesetzt wird, wird die zugewiesene Funktion nach Ablauf der Zeit automatisch ausgeführt, was zu unerwünschten Aktionen führen kann.

3. Wie kann ich mehrere Timer in einer Excel-Datei verwenden?
Du kannst mehrere Timer erstellen, indem du unterschiedliche globale Variablen für jeden Timer verwendest und sicherstellst, dass die OnTime-Methoden auf die entsprechenden Variablen zugreifen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige