所以我需要在我的表单上显示一个实时时钟,但我不确定如何。我知道代码:
TimeValue(Now)
会给我当前时间,但我不确定如何在我的表单上持续显示。
我有一个想法,就是将此代码放入循环中,如下所示:
Dim bool As Boolean
bool = True
Do While bool = True
Label1.Caption = TimeValue(Now)
Loop
但是我不知道把这段代码放在哪里。任何建议将不胜感激!
Excel 具有允许您安排执行任何过程的方法OnTime
。
只需使用它来安排一秒钟的节奏。
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()
,例如在表单的初始化方法中。
您尝试的问题是,您实际上是在创建一个无限循环。
您的 Excel 会占用相当多的 CPU 时间,甚至可能会阻止用户输入,因为它会尽可能快地执行您的 while 语句。
查看此示例http://www.andypope.info/vba/clock.htm或查看这篇文章中的解决方案如何在 Excel 中显示正在运行的时钟?
他们应该帮助你。
至少您应该DoEvents
在循环中包含一个语句。
我解决了其他人在所选答案中使用给定代码遇到的问题。我删除了该latesttime
行并改为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
已更改为我的userform
.