VBA如何在用户窗体中显示实时时钟?
所以我需要在表单上显示一个实时时钟,但我不知道如何。 我知道代码:
TimeValue(Now)
会给我目前的时间,但我不知道如何不断地显示在我的表单上。
我有一个想法是把这个代码放在一个循环中,如下所示:
Dim bool As Boolean bool = True Do While bool = True Label1.Caption = TimeValue(Now) Loop
但是我不确定把这个代码放在哪里。 任何build议将不胜感激!
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时间,甚至会阻止用户input,因为它会尽可能快地超越你的while语句。
看看这个例子http://www.andypope.info/vba/clock.htm或在这篇文章的解决scheme如何在Excel中显示运行时钟?
他们应该帮助你。
至less你应该在循环中包含一个DoEvents
语句。
我解决了其他人在给出的答案中给定的代码的问题。 我删除了最后一行,我改变了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已更改为我的用户表单上的相应标签。
感谢所有的帮助!