AW: Autofilter mal anders?
06.04.2008 16:40:52
fcs
Hallo Mathias,
die automatische Speicherung kann man mit einer OnTime-Prozedure steuern, die beim Öffnen der Datei gestartet wird. Ich hab das Ganze so strukturiert, dass die Automatik auch manuell einfach ein- und ausgeschaltet werden kann.
Diese Lösung hat auch den Vorteil, dass man Excel und andere Anwendungen nicht durch den Count-Down-Zähler blockiert.
In der Statuszeile wird die Zeit bis zur nächsten Speicherung im Minutentakt angezeigt, während der letzten Minute im Sekundentakt.
Gruß
Franz
'Prozeduren unter diese Arbeitsmappe
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call SpeichernAus
End Sub
Private Sub Workbook_Open()
Call SpeichernEin
End Sub
'Prozeduren in einem allgemeinem Modul
'Funktion: Speichern der Datei in regelmäßigen Intervallen
'Erstellt: 2008-04-06, zuletzt geändert: 2008-04-06
'Ersteller: fcs
'Excel-Version: Excel 97
'Variablen Deklarationen
Private Speicherzeit As Date
Private Meldungzeit As Date
Private bolSpeichern As Boolean 'Status der Speicherautomatik
Private Const strProzedur As String = "SpeichernIntervall" 'Name der OnTime-Prozedur
Private Const strMeldung As String = "Meldung" 'Name der OnTime-Prozedur
Private Const strIntervall As String = "00:30:00" 'Speicherintervall ("hh:mm:ss")
Private Const strIntervallMeldung As String = "00:01:00" 'Meldungsintervall ("hh:mm:ss")
Sub SpeichernIntervall()
'Wenn Datei nicht gespeichert, dann speichern
If ThisWorkbook.Saved = False Then
Application.StatusBar = False
ThisWorkbook.Save
End If
'Speicherzeit neu setzen und OnTime-Aufruf starten
Application.OnTime Earliesttime:=Meldungzeit, Procedure:=strMeldung, Schedule:=False
Speicherzeit = Now + CDate(strIntervall)
Application.OnTime Earliesttime:=Speicherzeit, Procedure:=strProzedur
Meldungzeit = Now + CDate(strIntervallMeldung)
Application.OnTime Earliesttime:=Meldungzeit, Procedure:=strMeldung
End Sub
Sub Meldung()
'Anzeige der nächsten Speicherung in der Statuszeile alle 60 Sekunden
If ThisWorkbook.Saved = False Then
Application.StatusBar = "Nächste Speicherung der Datei """ & ThisWorkbook.Name & """ in " _
& Format(Speicherzeit - Now, "hh:mm:ss") & " (hh:mm:ss)"
Else
Application.StatusBar = False
End If
'Speicherzeit neu setzen und OnTime-Aufruf starten
'Countdown im Sekundentakt währende der letzten 60 Sekunden
If Speicherzeit - Now