Frage von MPCKhome, 99

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

Antwort
von BerchGerch, 60

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)

Kommentar von BerchGerch ,

Ü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

Kommentar von maximilianus7 ,

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.

Kommentar von BerchGerch ,

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

Kommentar von Iamiam ,

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!

Kommentar von BerchGerch ,

Ja hab ich. Funzt genauso wie es soll, ohne wenn und aber!

Antwort
von Omnivore09, 52

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!

Kommentar von Iamiam ,

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.

Kommentar von Omnivore09 ,

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

genau da ist das Problem

Keine passende Antwort gefunden?

Fragen Sie die Community