Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Application.OnTime

Betrifft: Application.OnTime von: Franc
Geschrieben am: 30.08.2004 21:02:07

Da es hier im Forum nicht nach oben geschoben wird muss ich nochmal einen neuen Beitrag schreiben.
Alter: https://www.herber.de/forum/messages/477590.html

Das Problem ist gefunden ich weiss nur nicht wie ich es beheben soll.

Wenn ich

Application.OnTime Time + TimeSerial(0, 10, 0), "bild",

Schreibe öffnet er bei jedem Start ein neues Timefenster. (deswegen hatte ich dann auch soviel Meldungen)

Wenn ich

erst
Application.OnTime Time + TimeSerial(0, 10, 0), "bild",
und dann
Application.OnTime Time + TimeSerial(0, 10, 0), "bild", False

schreibe dann schließt er das alte und nimmt daher immer nur 1.

Jetzt gibbet es aber ein Problem.

wenn ich jetzt

Application.OnTime Time + TimeSerial(0, 10, 0), "bild", False
starte dann gibts natürlich eine Fehlermeldung. (weil kein Zeitfenster mehr offen ist)

Gibt es eine Option womit ich prüfen kann, ob Application.OnTime bereits gestartet wurde? Oder ich alle offenen Zeitfenster schließen kann?

Ich kann in meiner Tabelle nicht 100%-ig festlegen ob gerade ein Zeitfenster offen ist oder nicht.

  


Betrifft: schau nochmal unten nach oT von: mealone
Geschrieben am: 30.08.2004 22:37:30




  


Betrifft: AW: Application.OnTime von: Philipp von Wartburg
Geschrieben am: 30.08.2004 22:43:35

Hallo Franc

Das Problem liegt an der doppelten Verwendung von Time. Beim Löschen der geplanten Prozedurausführung (d.h. Scheduled-Parameter=False) muss der gleiche Zeitpunkt angegeben werden, der beim Hinzufügen der geplanten Ausführung verwendet wurde. Wenn man das nicht macht und eine Sekunde später (oder mehr) versucht, die geplante Ausführung zu löschen, erscheint der Laufzeitfehler 1004. Der Fehler erscheint jedoch nicht, weil kein Zeitfenster mehr offen ist sondern weil die angegebene Zeit falsch ist. Der ursprünglich verwendete Zeitpunkt muss daher in einer öffentlichen Variable festgehalten werden.

Hier ein Beispiel:

Dim varTime As Variant

Sub SetTimer()
  varTime = Time + TimeSerial(0, 10, 0)
  Application.OnTime varTime, "DoIt"
End Sub

Sub KillTimer()
  Application.OnTime varTime, "DoIt", , False
End Sub

Sub DoIt()
  MsgBox "Hallo OnTime!", vbInformation
End Sub


Eine Option zum Prüfen, ob OnTime bereits ausgeführt wurde, gibt es nicht. Wenn man jedoch die Codezeile "Application.OnTime varTime, "DoIt", , False" ausführt und es tritt der Laufzeitfehler 1004 auf, so weiss man, dass diese geplante Prozedurausführung entweder schon gelaufen ist oder bereits gelöscht wurde.

Gruss
Philipp

¦¦¦ xlam - Excel and more!
¦¦¦ http://195.186.84.74/index.htm


  


Betrifft: AW: Application.OnTime von: Franc
Geschrieben am: 31.08.2004 00:04:34

thx das funktioniert.

Die Fehlermeldungen umgehe ich mit

On Error GoTo ende