显示需求

在使用用户窗体设计用户界面时,我们想要在适当的位置显示时钟,方便用户实时查看时间。

效果如图:

解决方式

1.先设置需要显示的模块

放置了一个文本框控件(保留其默认名称 TextBox1 ),并在其中显示实时时间。

2. 在标准模块中添加代码

设计好用户窗体界面后,在VBE中插入一个标准模块,输入下面的代码:

注意:一定要把这个程序放到模块之中,否则 Application.OnTime 这个函数会报错!

1
2
3
4
5
6
7
8
9
10
11
12
13
Sub StartTimer1()
Application.OnTime Now + TimeValue("00:00:01"),"NextTick1"
End Sub

Sub NextTick1()
UserForm1.TextBox1 = Format(Now, "yyyy/mm/dd hh:mm:ss AM/PM")
StartTimer1
End Sub

Sub StopTimer1()
On ErrorResume Next
Application.OnTime Now + TimeValue("00:00:01"),"NextTick1", , False
End Sub

3. 运行 NextTick1 函数即可

  • 运行NextTick1过程,然后显示用窗体,即可以看到显示实时时间的效果
  • 也可以使用其他合适的控件,如标签控件
  • 如果要停止时间的实时显示,运行StopTimer1过程即可。

#其他方法

方式一

方法同上在标准模块中使用Application.OnTime 函数,将Label1.caption更改为我的用户窗体上想要显示的适当标签。

1
2
3
4
5
6
7
8
9
10
11
Sub DisplayCurrentTime()
Dim nextSecond As Date

nextSecond = DateAdd("s", 1, Now())

Label1.Caption = Time()

Application.OnTime _
Procedure:="DisplayCurrentTime", _
EarliestTime:=nextSecond
End Sub

方式二

要求:三个文本框分别放置系统时间的 时,分,秒,并随着时间变动而变动

放在模块中的函数:

1
2
3
4
5
6
7
8
9
10
11
12
Sub 时间()
UserForm1.TextBox1 = Left(Application.WorksheetFunction.Text(Now(), "HH:MM"), 2)
UserForm1.TextBox2 = Right(Application.WorksheetFunction.Text(Now(), "HH:MM"), 2)
UserForm1.TextBox3 = Right(Application.WorksheetFunction.Text(Now(), "MM:SS"), 2)

Application.OnTime Now() + TimeValue("00:00:01"), "时间"
End Sub

Sub 停止()
On Error Resume Next
Application.OnTime Now() + TimeValue("00:00:01"), "时间", , False
End Sub

放在窗体中:

1
2
3
4
5
6
7
8
9
10
11
Private Sub CommandButton1_Click()
Call 停止
End Sub

Private Sub CommandButton2_Click()
Call 时间
End Sub

Private Sub UserForm_Initialize()
Call 时间
End Sub

放在启动中:

1
2
3
Private Sub Workbook_Open()
UserForm1.Show
End Sub

时钟文件


相关链接

  1. VBA实战技巧18:在用户窗体中显示时钟
  2. excel - VBA如何在用户窗体中显示实时时钟?
  3. 考试题目】在窗体文本框内实时显示系统时间

=================我是分割线=================

欢迎到公众号来唠嗑: