Intervall innerhalb eines Zeitrahmens, wie?

Nomma ich …

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?

Grüße,
Lumpi

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

greets from michL (vienna)

Wow; dankeschön!
Nicht das ichs verstehen würde, aber trotzdem.
Ich werds gleich morgen früh „einbauen“ und meine Erfahrung damit machen :smile:

Grüße aus Duisburg
Torsten