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

Application.OnTime stoppen

Forumthread: Application.OnTime stoppen

Application.OnTime stoppen
05.04.2016 15:30:42
Luzi
Hallo
hab folgendes Problem mit NextTime. Das Makro "Intervall" funktioniert .Allerdings
sollte er mit den nächsten Makro "Abbruch" seine Arbeit einstellen was er nicht macht.Gesteuert wird das ganze über Formalsteuerelemente .Hab gestern viel gelesen im Netz .Tipps versucht umzusetzen .Nach 4 Std. aufgegeben .Ihr seid meine letzte Hoffnung.
Grüß Luzi67

Public Sub Intervall()
Dim NextTime As Date
NextTime = Now + TimeValue("00:00:10")  'Zeitintervall festlegen, hier 10 Sec
Application.OnTime NextTime, "Intervall"
Call letzte_zeile         'hol Daten aus einer Text Datei die sich aktualisiert
End Sub

Public Sub Abbruch()
Application.OnTime NextTime, "Intervall", Schedule:=True
End Sub

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Application.OnTime stoppen
05.04.2016 15:51:08
Tony
Hi Luzi,
habe mal fix gegooglet:
Beim Wert True wird eine neue "OnTime"-Prozedur ausgeführt. Beim Wert False wird eine zuvor festgelegte Prozedur gelöscht. Der Standardwert ist True.
Wenn du die Prozedur beenden willst teste einmal den Wert False :)

Anzeige
AW: Application.OnTime stoppen
05.04.2016 15:57:14
Gerold
Hallo Luzi67
Public Sub Abbruch()
Application.OnTime NextTime, "Intervall", Schedule:=False
End Sub
Gruß Gerold

AW: Application.OnTime stoppen
05.04.2016 16:05:37
Luzi67
Hallo
erst mal thx an euch beiden , aber leider bricht er mit einer Fehlermeldung ab " 1004 "
Application.OnTime NextTime, "Intervall", Schedule:=False
Hatte ich gestern auch schon so, das True ist wohl beim versuchen reingerutscht.
Noch wer eine Idee ?
Grüß Luzi67

Anzeige
AW: Application.OnTime stoppen
05.04.2016 16:12:14
Tony
Teste mal bitte folgendes:
Public Sub Abbruch()
Application.OnTime NextTime, Procedure:="Intervall", Schedule:=False
End Sub
P.S. hab hier gerade nicht die Möglichkeit es selbst zu testen :)

AW: Application.OnTime stoppen
05.04.2016 16:22:55
Luzi67
Hallo Tony
Leider nein , wieder Fehlermeldung . Excel schafft mich -.- .
Gestern hab ich gelesen das eventuelle eine Stopper"-Variable eingesetzt werden muss .
Beim Debuggen bleibt er immer an der stelle Stehen.
Application.OnTime NextTime, Procedure:="Intervall", Schedule:=False
Grüß Luiz67

Anzeige
AW: Application.OnTime stoppen
05.04.2016 16:26:16
Tony
Hi Luzi,
habe jetzt mal den Laptop angemacht :) und folgendes funktioniert bei mir :

Dim NextTime As Date
Public Sub Intervall()
NextTime = Now + TimeValue("00:00:10")  'Zeitintervall festlegen, hier 10 Sec
Application.OnTime NextTime, "Intervall"
Debug.Print NextTime
End Sub
Public Sub Abbruch()
Application.OnTime NextTime, Procedure:="Intervall", Schedule:=False
End Sub
Hintergrund, du musst (meines Erachtens) eine Variable definieren die von beiden Makros genutzt wird, damit diese auch "angehalten" werden kann. So viel zu meiner Idee :)

Anzeige
AW: Application.OnTime stoppen
05.04.2016 16:26:55
Gerold
Hallo
Hallo Luzi67
Habs bei einer meiner Sachen so eingesetzt.
Wichtig ist das On Error falls der Befehl schon abgearbeitet wurde.

Public Zeit As Date
Sub Auto_Refresch()
Zeit = Now + CDate("0:01:00")
Application.OnTime Zeit, "Freigabe", Schedule:=True
End Sub
Sub Auto_Refresch_löschen()
On Error Resume Next
Application.OnTime Zeit, "Freigabe", Schedule:=False
On Error GoTo 0
End Sub
Sub Freigabe()
End sub
________________
Gruß Gerold

Anzeige
AW: Application.OnTime stoppen
05.04.2016 16:33:54
Daniel
Hi
das muss so laufen:
Public NextTime As Date
Public Sub Intervall()
NextTime = Now + TimeValue("00:00:10")  'Zeitintervall festlegen, hier 10 Sec
Application.OnTime NextTime, "Intervall"
Call letzte_zeile         'hol Daten aus einer Text Datei die sich aktualisiert
End Sub
Public Sub Abbruch()
if NextTime > Now then Application.OnTime NextTime, "Intervall", Schedule:=false
End Sub
die Variable NextTime muss als Projektweit gültige ("globale") Variable erstellt werden, damit sie auch im Makro "Abbruch" bekannt ist, obwohl sie im Makro "Intervall" befüllt wurde.
hierzu erfolgt die Deklaration oberhalb der Makros mit "Public"
in den Makros selbst darfst du diese Variable dann nicht mehr deklarieren.
Gruß Daniel

Anzeige
AW: Application.OnTime stoppen
05.04.2016 16:43:00
Luzi67
Hallo Daniel !!!
Bingo das war es . Herzlichen Dank und den anderen die sich dieses Problem annahmen.
Super Forum Hier ^^
Schönen Abend noch....
Luzi67
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Anwendung von Application.OnTime in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Deklaration der Variablen: Du musst eine globale Variable für die Zeit deklarieren, die von beiden Makros verwendet wird. Dies geschieht durch die Verwendung von Public.

    Public NextTime As Date
  2. Erstellung des Intervall-Makros: Definiere das Makro, das die wiederholte Ausführung steuert. Hierbei wird die Zeit festgelegt, nach der das Makro erneut aufgerufen wird.

    Public Sub Intervall()
       NextTime = Now + TimeValue("00:00:10")  ' Zeitintervall festlegen, hier 10 Sekunden
       Application.OnTime NextTime, "Intervall"
       Call letzte_zeile  ' Daten aus einer Textdatei abrufen
    End Sub
  3. Erstellung des Abbruch-Makros: Implementiere ein Makro, das das Intervall-Makro stoppt. Hierbei wird Schedule:=False verwendet.

    Public Sub Abbruch()
       If NextTime > Now Then Application.OnTime NextTime, "Intervall", Schedule:=False
    End Sub

Häufige Fehler und Lösungen

  • Fehler 1004: Dieser Fehler tritt häufig auf, wenn die Application.OnTime-Anweisung versucht, eine nicht vorhandene Prozedur zu stoppen. Überprüfe, ob der Prozedurname korrekt ist.

  • Globale Variable nicht erkannt: Stelle sicher, dass die Variable NextTime als Public deklariert wurde, damit sie in beiden Makros verfügbar ist.

  • Fehlermeldung bei Stop: Nutze On Error Resume Next, um Fehler zu ignorieren, wenn die Prozedur bereits abgelaufen ist.

    On Error Resume Next
    Application.OnTime NextTime, "Intervall", Schedule:=False
    On Error GoTo 0

Alternative Methoden

Eine alternative Methode zur Verwendung von Application.OnTime ist die Nutzung von Timer-Funktionen in VBA, um wiederkehrende Aufgaben durchzuführen. Dies kann durch die Verwendung von DoEvents in einer Endlosschleife geschehen, birgt jedoch das Risiko von Performance-Problemen bei langen Ausführungszeiten.


Praktische Beispiele

Hier ist ein einfaches Beispiel, das zeigt, wie man Application.OnTime in einem Excel-Projekt nutzen kann:

Public NextTime As Date

Public Sub StartTimer()
    NextTime = Now + TimeValue("00:01:00")  ' Timer auf 1 Minute setzen
    Application.OnTime NextTime, "Task"
End Sub

Public Sub Task()
    MsgBox "Eine Minute ist vergangen!"
    StartTimer  ' Timer wieder starten
End Sub

Public Sub StopTimer()
    On Error Resume Next
    Application.OnTime NextTime, "Task", Schedule:=False
    On Error GoTo 0
End Sub

Tipps für Profis

  • Verwende Debug.Print: Nutze Debug.Print, um Informationen zur Laufzeit zu protokollieren und den Status Deiner Makros zu überwachen.

  • Fehlerbehandlung: Implementiere eine umfassende Fehlerbehandlung, um sicherzustellen, dass der Code auch bei unerwarteten Ereignissen stabil bleibt.

  • Dokumentation: Kommentiere Deinen Code ausführlich, um die Nachvollziehbarkeit zu erhöhen und anderen (oder Deinem zukünftigen Ich) das Verstehen zu erleichtern.


FAQ: Häufige Fragen

1. Wie stoppe ich ein laufendes Makro mit Application.OnTime?
Nutze Application.OnTime mit Schedule:=False, um das Makro zu stoppen. Stelle sicher, dass die Zeitvariable global ist.

2. Was mache ich, wenn ich einen Fehler 1004 erhalte?
Dieser Fehler deutet darauf hin, dass die angegebene Prozedur nicht existiert oder bereits ausgeführt wurde. Überprüfe die Prozedurnamen und verwende Fehlerbehandlung, um dies zu umgehen.

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