VBA laufende Uhrzeit?
Ich würde gern ein Makro haben das ich an ein Knopf binde. Sobald der knopf gedrückt wird soll in Zelle A1 die laufende Uhrzeit erscheinen. Ein anderer Knopf soll das wieder beenden und die letzte Uhrzeit bleibt dann in der Zelle.
jemand eine Idee oder gar ein Code ?
Danke
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
ZeitmakroStartenund
ZeitmakroBeendenzuweisen.
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)
statt:
If m_bolBeenden = True Then
m_bolBeenden = False
Else
m_bolBeenden = True
End If
nehme:
m_bolBeenden = not m_bolBeenden
tschuldigung, hat mir in den fingern gejuckt: wenn schon boolean, dann richtig boolean.
Hast Du das ausprobiert? ich nehme an, dass die Variablenwerte sofort nach getaner Arbeit wieder verloren gehen! (könnte sein, dass es geht, wenn man die Variable m_bolBeenden als Public deklariert: in der Kopfzeile des Moduls an ggf existente Einträge ein
: Public m_bolBeenden
anhängen
Trotzdem DH!
Danke für den Hinweis. Hab den Not-Operator bisher noch nie benutzt. Kannst du mir die Zeile oben bitte kurz erklären? Danke!
Viele Grüße
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!
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.
Ob das nicht zu oft ist, weiß ich nicht, dann das könnte Anderes blockieren.
genau da ist das Problem
Übrigens:
Wenn du den Code von ZeitmakroStarten so gestaltest
kannst du das Makro mit ein und derselben Schaltfläche starten und beenden und brauchst das Makro ZeitmakroBeenden gar nicht.
Gruß, BerchGerch