AW: Event zur bestimmten Systemzeit auslösen
09.08.2006 13:27:45
fcs
Hallo J.,
hierzu muss du mit der OnTime-Methode arbeiten. Dann kann man dies etwa wie folgt lösen.
Dabei ist wichtig, dass alle Objekte mit ihrer vollen Bezeichnung (inkl. Workbook und Sheet) angesprochen werden, da der Timer ggf. startet während eine andere Arbeitsmappe aktiv ist. Mit dem Makro "TimerStart" wird der Timer gestartet und entnimmt die nächste Startzeit jeweils aus den angegeben Zellen.
Public wbThis As Workbook, Zeile As Long, Tasktime As Date
Sub Timerstart()
Set wbThis = ActiveWorkbook
Zeile = 2 ' zeile in der die 1. Startzeit des Timers steht
Tasktime = wbThis.Sheets("Tabelle1").Cells(Zeile, 1).Value
Application.OnTime Earliesttime:=Tasktime, Procedure:="Task"
End Sub
Private Sub Task()
' Code der vom Timer ausgeführt werden soll
With wbThis.Sheets("Tabelle1")
.Cells(Zeile, 2).Value = Time
.Cells(Zeile, 1).Interior.ColorIndex = 3 'oder ein anderes event!
MsgBox "Timmer Zeit aus Zelle " & .Cells(Zeile, 1).Address 'TestZeile
End With
' Nächsten Timer Start vorbereiten
Zeile = Zeile + 1 ' Zeilen mit weiteren Timer Starts
If Zeile < 6 Then
Tasktime = wbThis.Sheets("Tabelle1").Cells(Zeile, 1).Value
Application.OnTime Earliesttime:=Tasktime, Procedure:="Task"
End If
End Sub
zusätzlich sollte eine Workbook_BeforeClose Prozedur unter diese Arbeitsmappe
den letzten OnTime-Start löschen wenn die Datei geschlossen wird, bevor der letzte OnTime-Start erfolgt ist.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.OnTime Earliesttime:=Tasktime, Procedure:="Task", Schedule:=False
End Sub
gruss
Franz