Bislang habe ich Makros, die in Intervallen ablaufen und Makros die zu bestimmten Terminen ablaufen, dass funzt ganz gut via
Application.OnTime Now + TimeValue(„00:30:00“), „makro1“
und
Application.OnTime TimeValue(„14:30:00“), „makro2“
Nun habe ich ein Makro, das um 21 Uhr das erste mal laufen soll, sich dann alle 15 min wiederholt und um 7 Uhr das letzte mal laufen soll.
Hat jemand eine Idee, wie das (möglichst simpel) realisiert werden kann?
Hallo Lumpi
also grundlegend kann jedes Datumformat auch in der Variable Double ausgegeben werden.
D.H. ein Tag ist dann =1, 2 Tage = 2 etc. Dieser Wert, wird in die Variable gespeichert, die bei ONTime mit der Uhrzeit aufgerufen wird.
Somit müstest Du jedes Mal, wenn die OnTime Funktion vorbei ist, die Variable um 15 Minuten erhöhen, und mit einer Sprungmarke wieder zu der Ontimefunktion wechseln. Für das festlegen der Variable versuche mal follgendes, Speichere Sie als Date und verwende den Code:
String = now + „00:15:00“. Weiss abver nicht ob das geht.
Gruss Sebastian
Public globalDateStart As Date
Public globalDateEnd As Date
Public Sub test()
If globalDateStart = 0 And globalDateEnd = 0 Then
'heutiges Datum setzen
globalDateStart = DateSerial(Year(Now), Month(Now), Day(Now))
'einen Tag dazu = morgen
globalDateEnd = DateAdd("d", 1, globalDateStart)
'Heute 21:00 Uhr
globalDateStart = DateAdd("h", 21, globalDateStart)
'Morgen 07:00 Uhr
globalDateEnd = DateAdd("h", 7, globalDateEnd)
Call Application.OnTime(globalDateStart, "test")
Else
'15 Minuten dazu
globalDateStart = DateAdd("n", 15, globalDateStart)
'Prüfen, ob es schon 7 Uhr vorbei ist
If globalDateStart \> globalDateEnd Then Exit Sub
Call Application.OnTime(globalDateStart, "test")
End If
End Sub