VBA laufende Uhrzeit?

... komplette Frage anzeigen

2 Antworten

Hallo,

ich habe durch ein wenig googeln zwei Codeschnipsel gefunden.

Zunächst packst du diesen Code in ein normales Modul:

Option Explicit

Dim m_bolBeenden As Boolean
' Code "Zeitmakro" von Hajo Ziplies,
Public DaEt As Date
'

Sub ZeitmakroStarten()
m_bolBeenden = False
Zeitmakro
End Sub

Sub Zeitmakro()
If m_bolBeenden = True Then Exit Sub
ThisWorkbook.Worksheets("Tabelle1").Range("A1") = Format(Time, "hh:mm:ss")
DaEt = Now + TimeValue("00:00:01")
Application.OnTime DaEt, "Zeitmakro"
End Sub

Sub ZeitmakroBeenden()
m_bolBeenden = True
End Sub

Jetzt musst du nur noch Schaltflächen erstellen und diesen die Makros

ZeitmakroStarten

und

ZeitmakroBeenden

zuweisen.

Gruß, BerchGerch

PS: Zusammengebastelt habe ich den Code aus den Codeschnipseln der folgenden Internetseiten:

http://www.supportnet.de/fresh/2007/1/id1497228.asp

(Antwort 1 von Beverly. Das Problem ist, dass sich dieses Makro nicht mehr beenden lässt).

Daher habe ich noch Codeschnipsel von dieser Seite eingefügt:

http://www.office-loesung.de/ftopic249594_0_0_asc.php

(siehe die Antwort von r.mueller)

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von BerchGerch
08.04.2016, 19:05

Übrigens:

Wenn du den Code von ZeitmakroStarten so gestaltest

Sub ZeitmakroStartStopp()
If m_bolBeenden = True Then
m_bolBeenden = False
Else
m_bolBeenden = True
End If
Zeitmakro
End Sub

kannst du das Makro mit ein und derselben Schaltfläche starten und beenden und brauchst das Makro ZeitmakroBeenden gar nicht.

Gruß, BerchGerch

0

Wenn die Urzeit live mitlaufen soll, dann kannst du die Idee verwerfen. Dafür bräuchtest du Threading um es wieder abzubrechen. Und das geht in VBA nicht. Du kannst höchstens die aktuelle Urzeit reinschreiben!

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Iamiam
08.04.2016, 19:46

nein, das Makro von Hajo Ziplies ruft das Makro in kurzen Abständen jeweils zum Zeitpunkt

Now + TimeValue("00:00:01")

immer wieder auf (also selbstaufrufend jede Sekunde).

Das bewirkt der Befehl

Application.OnTime DaEt "zeitmakro"

Ob das nicht zu oft ist, weiß ich nicht, dann das könnte Anderes blockieren.

Funktioniet allerdings nur, wenn xl aktiv ist, in einem Fenster im Hintergrund tut sich nichts.

0

Was möchtest Du wissen?