vba 定时器

vba代码中,可以设置定时器。方法是 application.ontime ,具体函数如下:

expression.OnTime(EarliestTime, Procedure, LatestTime, Schedule)

这个函数是用来安排一个过程在将来的特定时间运行,(可为某个日期的指定时间,也可为指定的时间段之后)。通过这个函数我们就可以在 Excel 里编写自己的定时程序了。

 

含有这种宏的excel,打开excel时会自动执行这个过程。 

 

如下例子,执行过程 Run_it 后,将在指定时间  17:00:00 执行 Show_my_msg 

Sub Run_it()
  Application.OnTime TimeValue("17:00:00"), "Show_my_msg"
  '设置定时器在 17:00:00 激活,激活后运行 Show_my_msg 。
End Sub

Sub Show_my_msg()
  msg = MsgBox("现在是 17:00:00 !", vbInformation, "自定义信息")
End Sub

 

如下例子执行过程 auto_open 后,将在当前时间过 5 秒钟开始运行 Saveit 这个过程

Sub auto_open()
  MsgBox "欢迎你,在这篇文档里,每 5 秒出现一次保存的提示!", vbInformation, "请注意!"
  Call runtimer '打开文档时自动运行
End Sub

Sub runtimer()
  Application.OnTime Now + TimeValue("00:00:05"), "saveit"
  ' Now + TimeValue("00:15:00") 指定在当前时间过 5 秒钟开始运行 Saveit 这个过程。
End Sub


Sub SaveIt()
  msg = MsgBox("朋友,你已经工作很久了,现在就存盘吗?" & Chr(13) & "选择是:立刻存盘" & Chr(13) & "选择否:暂不存盘" & Chr(13) & "选择取消:不再出现这个提示", vbYesNoCancel + 64, "休息一会吧!")

  '提示用户保存当前活动文档。
  If msg = vbYes Then ActiveWorkbook.Save Else If msg = vbCancel Then Exit Sub
  Call runtimer '如果用户没有选择取消就再次调用 Runtimer
End Sub

  

 

posted @ 2023-05-23 09:19  绮丽梦境  阅读(723)  评论(0编辑  收藏  举报