Mit dem in Excel integrierten Wecker kann bei Angabe einer Uhrzeit ein beliebiges Makro ausgeführt werden. Um fortlaufend die Uhrzeit im Sekundentakt anzuzeigen, stellen Sie in einem Makro den Wecker immer auf die aktuelle Zeit puls eine Sekunde und teilen ihm mit, das er das gleiche Makro immer wieder aufrufen soll. Gehen Sie dabei wie folgt vor.
Starten Sie mit der Tastenkombination
[Alt] + [F11] die VBA Entwicklungsumgebung und erfassen Sie in einem neuen Modul-blatt den VBA-Code aus Listing 1.
Listing 1: Uhrzeit in Statusleiste anzeigen
Public Const makro As String = "uhrzeit"
Public nexttime
Sub uhrzeit()
Application.StatusBar = "Zeit:" & Format(time, "hh:mm:ss")
nexttime = Now + TimeValue("00:00:01")
Application.OnTime nexttime, makro
End Sub
Als erstes wird eine öffentliche Konstante mit dem Namen
makro definiert. Dieser Konstante wird der Prozedurname
uhrzeit zugewiesen. Im zweiten Schritt erfolgt die Deklaration einer öffentlichen Variable mit der Bezeichnung
nexttime.
In der Prozedur uhrzeit wird in der ersten Zeile die aktuelle Uhrzeit in der Statusleiste dargestellt. Anschließend wird die aktuelle Uhrzeit errechnet, indem zur aktuellen Zeit eine Sekunde addiert wird. Über den Aufruf Application.Ontime starten Sie nun den Wecker, wobei Sie als ersten Parameter die Weckzeit und als zweiten Parameter den Namen des Makros angeben, welches zu der entsprechenden Zeit ausgeführt werden soll.
In diesem Beispiel wird das Makro uhrzeit ausgeführt, welches über die öffentliche Konstante makro angesprochen wird. Nachdem das Makro manuell einmal gestartet wurde, ruft es sich jede Sekunde selbst auf und aktualisiert so die Uhrzeit in der Statusleiste. Soll bei jedem Excelstart die laufende Uhrzeit in der Statusleiste angezeigt werden, dann tragen Sie diesen Code im Modul DieseArbeitsmappe als Auto-Open Makro Workbook_Open ein.
Zum Beenden der Uhrzeitanzeige in der Statusleiste benötigen Sie eine weitere Prozedur, siehe Listing 2.
Listing 2: Beenden der Uhrzeitanzeige
Sub uhrzeit_beenden()
On Error Resume Next
Application.OnTime earliesttime:=nexttime, procedure:=makro, schedule:=False
Application.StatusBar = ""
End Sub
Der Befehl Application.OnTime earliesttime:=nexttime, procedure:=makro, schedule:=False verhindert eine erneute Ausführung der OnTime Prozedur und unterbindet somit die Anzeige einer aktualisierten Uhrzeit.
Anschließend wird die Statusleiste durch die Zuweisung einer leeren Zeichenfolge in den Ursprungszustand zurückgesetzt. Damit wird die Uhrzeit ausgeblendet und der Standardzustand der Statusleiste angezeigt.