AW: Arbeitsmappe regelmäßig aktualisieren
17.02.2008 11:33:00
fcs
Hallo Markus,
OnTime ist schon der richtige Weg. Du muss "nur" die OnTime-Aktion am Ende des ausgeführten Makros erneut ausführen.
Zusätzlich muss du unter DieseArbeitsmappe in der Workbook_BeforeClose-Prozedur die OnTime-Aktion wieder zurücksetzen, um die letzten Aufruf ggf. zu löschen.
Gruß
Franz
'###### Modul Bespielcode für OnTime-Mehrfachausführung #####
'Prozedur "Aktion_OnTime_Aus" muss auch von der Workbook_BeforeClose-Prozedur aufgerufen werden! _
Private wbThis As Workbook, NextOnTime As Date
Private Const strInterval As String = "00:05:00" 'Zeitinterval für OnTime = 5 Minuten
Private Const strProzedur As String = "Aktion_OnTime" 'Prozedurname für OnTime-Aktion
Sub Schaltfläche1_BeiKlick()
Call Aktion_OnTime_Ein
End Sub
Sub Aktion_OnTime_Ein()
'Prozedur zur Aktualisierung starten
Set wbThis = ThisWorkbook
NextOnTime = Now + CDate(strInterval)
Application.OnTime earliesttime:=NextOnTime, Procedure:=strProzedur
End Sub
Sub Aktion_OnTime()
'Arbeitsmappe und Tabelle aktivieren in der OnTime-Aktionen ausgeführt werden soll
wbThis.Activate
wbThis.Worksheets("Tab1").Activate
'Code der in der Tabelle ausgeführt werden soll
MsgBox "OnTime-Aktion wurde gestartet" 'Testzeile
'Prozedur per OnTime neu starten
NextOnTime = Now + CDate(strInterval)
Application.OnTime earliesttime:=NextOnTime, Procedure:=strProzedur
End Sub
Sub Aktion_OnTime_Aus()
'Letzte OnTime-Aktion ggf. löschen
On Error Resume Next
Application.OnTime earliesttime:=NextOnTime, Procedure:=strProzedur, Schedule:=False
Set wbThis = Nothing
End Sub
'Code unter DieseArbeitsmappe
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call Aktion_OnTime_Aus
End Sub