VBA laufende Uhrzeit?

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)

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
maximilianus7  08.04.2016, 19:47
@BerchGerch

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.

1
Iamiam  08.04.2016, 19:50
@BerchGerch

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!

1
BerchGerch  08.04.2016, 19:52
@Iamiam

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

1
BerchGerch  08.04.2016, 19:58
@maximilianus7

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

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!

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
Omnivore09  08.04.2016, 19:47
@Iamiam

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

genau da ist das Problem

1