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.

Zum Seitenanfang