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已更改为我的用户表单上的相应标签。

感谢所有的帮助!