所以我需要在表单上显示一个实时时钟,但我不确定如何。我知道代码:
TimeValue(Now)
会给我当前的时间,但我不知道如何在我的表单上不断显示它。
我有一个想法是将此代码放在循环中,如下所示:
Dim bool As Boolean
bool = True
Do While bool = True
Label1.Caption = TimeValue(Now)
Loop
但是我不知道在哪里放这个代码。任何建议将不胜感激!
答案 0 :(得分:6)
Excel有the OnTime
method,允许您安排执行任何程序。
只需用它来安排一秒钟的节奏。
Sub DisplayCurrentTime()
Dim nextSecond As Date
nextSecond = DateAdd("s", 1, Now())
Label1.Caption = Now()
Application.OnTime _
Procedure:="DisplayCurrentTime", _
EarliestTime:=nextSecond, _
LatestTime:=nextSecond
End Sub
通过调用DisplayCurrentTime()
一次启动循环,例如在表单的initialize方法中。
答案 1 :(得分:4)
你的尝试的问题是,你实际上是在创造一个无限循环。
您的Excel会耗尽相当多的CPU时间,甚至可能会阻止用户输入,因为它会尽可能快地执行您的while语句。
请查看此示例http://www.andypope.info/vba/clock.htm或此帖How do I show a running clock in Excel?
中的解决方案他们应该帮助你。
至少你应该在循环中包含DoEvents
语句。
答案 2 :(得分:2)
我解决了其他人在所选答案中使用给定代码所遇到的问题。我删除了最新时间线,我更改了Label1.caption = Now()以改为使用Time()。
Sub DisplayCurrentTime()
Dim nextSecond As Date
nextSecond = DateAdd("s", 1, Now())
Label1.Caption = Time()
Application.OnTime _
Procedure:="DisplayCurrentTime", _
EarliestTime:=nextSecond
End Sub
然后我在userform_initialize函数中调用了它。 Label1.caption已更改为我的用户表单上的相应标签。
感谢所有帮助!!