AW: ontime beenden
21.10.2007 00:41:00
fcs
Hallo Chris,
ja dass funktioniert.
Dazu muss du die Ausführungszeiten vor dem Aufruf der Ontime-Aktionen in Variablen Speichern, die du in einem allgemeinen Modul als Public und vom Type "Date" deklarierst.
Im Modul DieseArbeitsmappe (ThisWorkbook) legts du dann eine Workbook_BeforeClose-Prozedur an.
Schaut dann zum Beispiel etwa wie folgt aus.
Gruß
Franz
'in einem allgemeinen Modul:
Option Explicit
Public Timer1 As Date, Timer2 As Date, Timer3 As Date
'In allgemeinen Modulen, Tabellen- oder Formularmodulen
Sub Timer1_Starten()
Timer1 = Now + CDate("00:00:15")
Application.OnTime earliesttime:=Timer1, Procedure:="Prozedur1"
End Sub
Sub Timer2_Starten()
Timer2 = Now + CDate("00:10:05")
Application.OnTime earliesttime:=Timer2, Procedure:="Prozedur2"
End Sub
Sub Timer3_Starten()
Timer3 = Now + CDate("01:00:10")
Application.OnTime earliesttime:=Timer3, Procedure:="Prozedur3"
End Sub
Sub Prozedur1()
'Test Timer1
MsgBox "Timer1 startet"
End Sub
Sub Prozedur2()
'Test Timer2
MsgBox "Timer2 startet"
End Sub
Sub Prozedur3()
'Test Timer3
MsgBox "Timer3 startet"
End Sub
'im Modul DieseArbeitsmappe (ThisWorkbook):
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim MsgText As String
On Error Resume Next 'überspringt bereits abglaufenen OnTime-Aktionen
'noch aktive OnTime-Aktionen
MsgText = "Folgende OnTime-Aktionen wurden noch nicht ausgeführt:"
If Timer1 > Now Then
MsgText = MsgText & vbLf & "Prozedur1 um " & Format(Timer1, "hh:mm:ss")
End If
If Timer2 > Now Then
MsgText = MsgText & vbLf & "Prozedur2 um " & Format(Timer2, "hh:mm:ss")
End If
If Timer3 > Now Then
MsgText = MsgText & vbLf & "Prozedur3 um " & Format(Timer3, "hh:mm:ss")
End If
If MsgText = "Folgende OnTime-Aktionen wurden noch nicht ausgeführt:" Then
MsgText = MsgText & vbLf & "Keine"
End If
MsgBox MsgText
'noch aktive OnTime-Aktionen der Datei zurücksetzen
Application.OnTime earliesttime:=Timer1, Procedure:="Prozedur1", Schedule:=False
Application.OnTime earliesttime:=Timer2, Procedure:="Prozedur2", Schedule:=False
Application.OnTime earliesttime:=Timer3, Procedure:="Prozedur3", Schedule:=False
MsgText = "Folgende OnTime-Aktionen wurden noch nicht ausgeführt:"
End Sub