http://www.outlookcode.com/threads.aspx?forumid=2&messageid=7964
Platzieren Sie den folgenden Code in das Modul Dieseoutlooksitzung (Tools-> Makros-> VB-Editor):
Private Sub Application_Quit()
If TimerID <> 0 Then Call DeactivateTimer 'Turn off timer upon quitting **VERY IMPORTANT**
End Sub
Private Sub Application_Startup()
MsgBox "Activating the Timer."
Call ActivateTimer(1) 'Set timer to go off every 1 minute
End Sub
den folgenden Code in einem neuen VBA-Modul
Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerfunc As Long) As Long
Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
Public TimerID As Long 'Need a timer ID to eventually turn off the timer. If the timer ID <> 0 then the timer is running
Public Sub ActivateTimer(ByVal nMinutes As Long)
nMinutes = nMinutes * 1000 * 60 'The SetTimer call accepts milliseconds, so convert to minutes
If TimerID <> 0 Then Call DeactivateTimer 'Check to see if timer is running before call to SetTimer
TimerID = SetTimer(0, 0, nMinutes, AddressOf TriggerTimer)
If TimerID = 0 Then
MsgBox "The timer failed to activate."
End If
End Sub
Public Sub DeactivateTimer()
Dim lSuccess As Long
lSuccess = KillTimer(0, TimerID)
If lSuccess = 0 Then
MsgBox "The timer failed to deactivate."
Else
TimerID = 0
End If
End Sub
Public Sub TriggerTimer(ByVal hwnd As Long, ByVal uMsg As Long, ByVal idevent As Long, ByVal Systime As Long)
MsgBox "The TriggerTimer function has been automatically called!"
End Sub
Wichtige Punkte:
1) Diese Timer-Funktion funktioniert nicht erfordern, dass ein bestimmtes Fenster geöffnet ist; es arbeitet im Hintergrund
2) Wenn Sie nicht über den Timer deaktivieren, wenn die Anwendung es wahrscheinlich zum Absturz schließt wird, beim Start
3) Das Beispiel zeigt den Timer aktiviert wird, aber es kann genauso einfach sein durch ein anderes Ereignis genannt
4) Wenn Sie nicht das msgbox sehen was anzeigt, dass der Timer beim Start aktiviert wurde, Ihre Makrosicherheit zu hoch eingestellt
5) Um den Timer zu deaktivieren, nachdem eine Iteration zu haben, das Zeitintervall add: Wenn TimerID <> 0 Dann Call DeactivateTimer nach der msgbox Anweisung in Unter TriggerTimer
Jemand schlug vor, sonst
„ein Punkt zu beachten, wenn Sie überprüfen nicht, ob TimerID die gleiche wie idevent im TriggerTimer ist, können Sie jeder so oft bekommen, und nicht die Zeit, die Sie gefragt zum."
Public Sub TriggerTimer(ByVal hwnd As Long, ByVal uMsg As Long, ByVal idevent As Long, ByVal Systime As Long)
'keeps calling every X Minutes unless deactivated
If idevent = TimerID Then
MsgBox "The TriggerTimer function has been automatically called!"
End If
End Sub
einen Blick auf diese: –
Wenn das Erinnerungsereignis ausgelöst wird, führen Sie Ihren Code aus, planen Sie 30 Minuten später eine weitere Aufgabenerinnerung und brechen Sie das Ereignis ab. – JimmyPena
Ich habe gehört, es ist möglich, Timer-Ereignis zu verwenden. Kann jemand bitte Code teilen, um dies mit einem Timer zu erreichen? – Tejas