Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1756to1760
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

Application.On Time löst mehrmals aus

Application.On Time löst mehrmals aus
07.05.2020 09:09:40
Aurelia
Hi Zusammen,
ich bin VBA blutiger anfänger und habe ein Problem und finde seit Tagen keine richtige lösung.
Ich habe einen Datenimport, bei dem Stündlich Daten dazu kommen. DEn Import selbst habe ich bereits geschrieben, und der funktioniert auch wie geschmiert.
Jetzt möchte ich aber, das dieser Import stündlich ausgeführt wird, immer um 5 nach, mit Application.OnTime.
Mit TimeSerial wollte es schon nicht so recht klappen, dann dachte ich, ich gebe den Zeitpunkt also TImeValue dirket immer ein. also "06:05:00", "07:05:00", usw.
ich Stoppe das Marko auch immer mit False am ende, das intiale Auslösen zu einer bestimmten Uhrzeit funktioniert auhc, nur fängt er am Ende direkt wieder an, und cih verstehe überhaupt nicht warum, und warum er nicht wieder aufhört.
Ich bin mir sicher dass ihr mir helfen könnt, wie gesagt, seid gnädig, ich bin VBA blutiger Anfänger, und habe mit Google schon diverse Lösungen probiert, die alle nicht so recht geklappt haben. Ihr seid meine letzte Hoffnung :/
Sub Timer()
Application.OnTime TimeValue("08:55:00"), "ImportOCS"
End Sub

Sub StopTimer()
Application.OnTime TimeValue("08:55:00"), "ImportOCS", False
End Sub

Danke und liebe Grüße
Aurelia

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Application.On Time löst mehrmals aus
07.05.2020 09:27:59
Daniel
HI
klares Denken ist beim Programmieren immer gut.
bei dir ist z.B. unklar, warum du in der Programmierung von "5 nach" sprichst, im Code dann aber "5 vor" verwendest.
Das passt nicht zusammen.
du solltest beim Aufruf immer Datum und Uhrzeit angeben, dann bist du auf der sicheren Seite (auch falls das Mal über Mitternacht laufen sollte.
dh ich würde den Aufruf für die nächste Stunde so schreiben:
Application.Ontime Date + TimeSerial(Hour(Now) + 1, 5, 0), "ImportOCS"
wenn man jetzt einen einmal getätigten Aufruf zurücknehmen will, muss man zwei dinge beachten:
a) man muss beim Stoppen nicht nur den gleichen Makronamen angeben, sondern auch die gleiche Startzeit wie beim Aufruf.
Daher speichert man die Aufrufzeit am besten in einer "globalen" Variable, so dass man sie beim Stoppen in einem anderen Makro wieder verwenden kann.
b) der Stoppwert FALSE ist der 4. Parameter in der Übergabereihenfolge, dazwischen liegt noch die Uhrzeit, nach der das Makro nicht mehr ausgeführt werden soll.
Wenn man jetzt die Parameter ohne Benennung eingibt, muss man diese Reihenfolge berücksichtigen und dafür sorge tragen, dass FALSE der 4. Parameter ist und nicht der 3.
also entweder Reihenfolge exakt einhalten:
Sub StopTimer()
Application.OnTime TimeValue("08:55:00"), "ImportOCS", , False
End Sub
oder Parameter, die nicht in Reihenfolge liegen, benennen:
Sub StopTimer()
Application.OnTime TimeValue("08:55:00"), "ImportOCS", Schedule:=False
End Sub
gruß Daniel
Anzeige
AW: Application.On Time löst mehrmals aus
08.05.2020 11:10:56
Aurelia
Hallo Daniel,
oh entschuldige, die 8:55 sind noch vom ausprobieren von gestern gewesen. Wenn die Datei verteilt wurde, soll sie auch wirklich immer um 05 nach laufen.
Ok, ich versuche das mal mit deinem Code, danke! das mit Hour(now) hab ich auch schon versucht, nur hat er mir da die 1h05 nicht addiert...
Grundsätzlich funktioniert dein Code auch, vielen Dank dafür! Nur, wenn ich das Timer Makro einmal starte, sollte es doch automatisch alle 1h05 laufen, ohne mein Zutun oder ? Das hat leider nciht funktioneriert :(
Eine generelle Frage hab ich noch:
Warum muss cih Start und Stop, wenn cih das mit fix eingegebenen Uhrzeiten mache, in 2 unterschiedliche Subs eingeben oder ginge das auch so ? (Ich frage das einfach mal hier, weil ich nicht sicher bin ob ich das überhaupt richtig mache...^^
Sub Timer ()
Application.OnTime TimeValue("08:55:00"), "ImportOCS"
Application.OnTime TimeValue("08:55:00"), "ImportOCS", False
End Sub
Danke euch und liebe Grüße
Aurelia
Anzeige

54 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige