每 2 小时创建一次计时器并显示消息框
Create every 2 hour Timer and display message box
我正在尝试创建一个每 2 小时发出一次警报并显示一个消息框的程序
您可以使用计时器控件来执行此操作,但您将无法直接将间隔设置为 7200000。您可以将间隔设置为 60000(并将启用 属性 设置为 True
) 并有一个变量来计算已经过去的分钟数:
Dim iMinutesElapsed As Integer
Private Sub Timer1_Timer()
iMinutesElapsed = iMinutesElapsed + 1
If iMinutesElapsed = 120 Then
DoAlarm
iMinutesElapsed = 0
End If
End Sub
Private Sub DoAlarm()
MsgBox "2 hours have gone by."
End Sub
更好的方法是用 Timer function 的值存储一个变量,并检查自您调用 Start
以来已经过了多长时间。在这种方法中,将 Timer1 的 Interval 设置为 1000 并将 Enabled 设置为 False,Start
方法将为您启用 Timer1:
Dim sngStart As Single
Public Sub Start()
sngStart = Timer
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
Dim sngElapsedTime As Single
sngElapsedTime = Timer - sngStart
If sngElapsedTime < 0 Then
' Clock passed midnight
sngElapsedTime = (86400 - sngStart) + Timer
End If
If sngElapsedTime > 7200 Then ' counting seconds with this code
sngStart = Timer ' Restart
DoAlarm
End If
End Sub
最后,一个解决方案将在第 30 分钟的每个奇数小时触发,如评论中所述:
Private Sub Timer1_Timer()
If Hour(Now) Mod 2 = 1 And Minute(Now) = 30 Then
DoAlarm
End If
End Sub
您还可以使用任务计划程序 运行 显示消息框的 VBScript。您只需创建一个带有触发器的任务,该触发器无限期地每 2 小时重复一次。
VBScript 可以显示时间:
MsgBox "It's now " & FormatDateTime(Now, vbShortTime)
另一种选择是将模块级变量设置为当前时间 + 两小时 (Now + (2.0 / 24.0)
),然后让定时器中断检查当前时间是否大于此存储值。
我正在尝试创建一个每 2 小时发出一次警报并显示一个消息框的程序
您可以使用计时器控件来执行此操作,但您将无法直接将间隔设置为 7200000。您可以将间隔设置为 60000(并将启用 属性 设置为 True
) 并有一个变量来计算已经过去的分钟数:
Dim iMinutesElapsed As Integer
Private Sub Timer1_Timer()
iMinutesElapsed = iMinutesElapsed + 1
If iMinutesElapsed = 120 Then
DoAlarm
iMinutesElapsed = 0
End If
End Sub
Private Sub DoAlarm()
MsgBox "2 hours have gone by."
End Sub
更好的方法是用 Timer function 的值存储一个变量,并检查自您调用 Start
以来已经过了多长时间。在这种方法中,将 Timer1 的 Interval 设置为 1000 并将 Enabled 设置为 False,Start
方法将为您启用 Timer1:
Dim sngStart As Single
Public Sub Start()
sngStart = Timer
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
Dim sngElapsedTime As Single
sngElapsedTime = Timer - sngStart
If sngElapsedTime < 0 Then
' Clock passed midnight
sngElapsedTime = (86400 - sngStart) + Timer
End If
If sngElapsedTime > 7200 Then ' counting seconds with this code
sngStart = Timer ' Restart
DoAlarm
End If
End Sub
最后,一个解决方案将在第 30 分钟的每个奇数小时触发,如评论中所述:
Private Sub Timer1_Timer()
If Hour(Now) Mod 2 = 1 And Minute(Now) = 30 Then
DoAlarm
End If
End Sub
您还可以使用任务计划程序 运行 显示消息框的 VBScript。您只需创建一个带有触发器的任务,该触发器无限期地每 2 小时重复一次。
VBScript 可以显示时间:
MsgBox "It's now " & FormatDateTime(Now, vbShortTime)
另一种选择是将模块级变量设置为当前时间 + 两小时 (Now + (2.0 / 24.0)
),然后让定时器中断检查当前时间是否大于此存储值。