So I need to display a real-time clock on my form but I am not sure how. I do know that the code:
TimeValue(Now)
will give me the current t
I solved the issue others were having with the given code in the chosen answer. I removed the latesttime
line and i changed Label1.caption = Now()
to use Time()
instead.
Sub DisplayCurrentTime()
Dim nextSecond As Date
nextSecond = DateAdd("s", 1, Now())
Label1.Caption = Time()
Application.OnTime _
Procedure:="DisplayCurrentTime", _
EarliestTime:=nextSecond
End Sub
I then called this in my userform_initialize
function. Label1.caption
was changed to the appropriate label on my userform
.
Excel has the OnTime method that allows you to schedule the execution of any procedure.
Just use it to schedule a one-second rhythm.
Sub DisplayCurrentTime()
Dim nextSecond As Date
nextSecond = DateAdd("s", 1, Now())
Label1.Caption = Now()
Application.OnTime _
Procedure:="DisplayCurrentTime", _
EarliestTime:=nextSecond, _
LatestTime:=nextSecond
End Sub
Start the loop by calling DisplayCurrentTime()
once, for example in the initialize method of your form.
The problem with your atempt would be, that you are effectively creating an infinite loop.
Your Excel would use up quite some CPU-Time and might even block user-input, because it would excecute your while-statements, as fast as it can.
Look at this example http://www.andypope.info/vba/clock.htm or at the solutions in this post How do I show a running clock in Excel?
They should help you.
At least you should include a DoEvents
statement in your loop.