Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Makro zyklisch aufrufen im Millisekunden-Takt

Forumthread: Makro zyklisch aufrufen im Millisekunden-Takt

Makro zyklisch aufrufen im Millisekunden-Takt
13.03.2025 08:44:40
dirknico
Hallo,



Sub StartTimer()
runwhen = Now + TimeSerial(0, 0, Worksheets("System").Range("B15"))
Application.OnTime earliesttime:=runwhen, procedure:="Interval", schedule:=True
End Sub

Sub Interval()
Daten_lesen
StartTimer
End Sub

Sub StopTimer()
On Error Resume Next
Application.OnTime earliesttime:=runwhen, procedure:="Interval", schedule:=False
End Sub


Mit diesem Code kann ich Makros zeitgesteuert aufrufen.
Nun ist mir der Sekundentakt aber zu groß, ich würde den Takt gern auf Millisekunden senken.
TimeSerial ist ja minimal auf Sekunden ausgelegt......
Ist dies irgendwie möglich?
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro zyklisch aufrufen im Millisekunden-Takt
13.03.2025 09:22:57
volti
Hallo Dirknico,

ich glaube, ich habe mal gesehen, dass Intervalwerte kleiner 1 eingegeben wurden.

Aber hier mal eine Lösung mittels Windows-API.
100 sind 100 mSec, kannst Du anpassen.

Im Beispiel wird die Sub nur einmal aufgerufen, weil der Timer gelöscht wurde, man kann aber auch dauerhaft die Sub aufrufen lassen.

Wichtig: Möglichst den Timer vor Beendigung der Mappe oder eher beenden.

Private Declare PtrSafe Function SetTimer Lib "user32" ( _

ByVal hwnd As LongPtr, _
ByVal nIDEvent As LongPtr, _
ByVal uElapse As Long, _
ByVal lpTimerFunc As LongPtr) As LongPtr
Private Declare PtrSafe Function KillTimer Lib "user32" ( _
ByVal hwnd As LongPtr, _
ByVal nIDEvent As LongPtr) As Long
Dim mhTimer As LongPtr

Sub StartTimer()
If mhTimer = 0 Then mhTimer = SetTimer(0&, 0&, 100, AddressOf CallbackProc)
End Sub

Sub StopTimer()
KillTimer 0&, mhTimer: mhTimer = 0 ' Timer löschen
End Sub

Sub CallbackProc()
Call StopTimer
MsgBox "Hello World"
End Sub



Gruß
Karl-Heinz
Anzeige
AW: Makro zyklisch aufrufen im Millisekunden-Takt
13.03.2025 10:21:19
daniel
Hi
soll das Makro im Hintergrund laufen, so dass du mit Excel weiterarbeiten kannst (was ich mir bei einer Millisekundentaktung kaum vorstellen kann) oder kann die Ausführung im Vordergrund passieren?
die nächste Frage wäre, da das Makro ja auch eine gewisse Laufzeit hat, soll das Makro zu festen Zeiten ausgeführt werden oder willst du eine bestimmte Pause zwischen den einzelnen Ausführungen haben?

also mal ein Beispiel, ein Makro soll alle Stunde ausgeführt werden und läuft 10 Minuten.
soll dann die Ausführung immer zur vollen Stunde sein (8:00, 9:00, 10:00) oder willst du eine Stunde Pause, also eine Stunde ab Makro ende: 8:00, 9:10, 10:20 usw.

Gruß Daniel
Anzeige
AW: Makro zyklisch aufrufen im Millisekunden-Takt
13.03.2025 12:02:31
Onur
1,15740740740741E-05 sind eine Sekunde und 1,15740740740741E-06 logischerweise 0,10 Sekunden (usw usw)
Warum nicht also:
s=0,0000115740740741

runwhen = Now + s/10
AW: Makro zyklisch aufrufen im Millisekunden-Takt
13.03.2025 12:04:00
Onur
Natürlich PUNKT statt KOMMA:
s=0.0000115740740741

runwhen = Now + s/10
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18