Nachfolgenden Code in ein Modul kopieren:
Option Explicit
Private Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
Private iTimer As Integer 'the timer identifier
Private Const lDelay As Long = 5000 'the time in ms between WM_TIMER events
Private Function TimerProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal iTimerID As Long, ByVal dwTime As Long) As Long
KillTimer 0&, iTimer 'stop timer
Debug.Print Time
End Function
Sub CATMain()
Debug.Print Time
iTimer = SetTimer(0&, 0&, lDelay, AddressOf TimerProc) 'start the timer
End Sub
Das Makro gibt im 'Immediate Window' der VBA-IDE per Debug.Print die Uhrzeit aus und startet danach den Timer.
Nach 5 sec. wird wieder die Uhrzeit ausgegeben, ausgelöst durch die Debug.Print-Anweisung in der Timer-Proc.
Anstelle von Debug.Print könnte auch der Aufruf einer beliebigen anderen Funktion stehen.
Wird der Timer innerhalb der TimerProc wieder gestartet, so muss der Timer an anderer Stelle vor dem Makro-Ende gestoppt werden.