codecamp

Excel里使用定时器的方法

如果您从事人事管理工作,有近百员工需要进行生日福利管理,那么,就得经常翻阅“员工花名册”来寻找“马上要过生日”的员工——实在是太麻烦了!用Excel建立一本“员工生日记录”是不是方便得多?下面来列举一些例子来进行说明。


你有用过 Excel 97 里的加载宏 "定时保存" 吗?可惜它的源程序是加密的,那么现在就上传一篇介绍实现它的文档。


在 Office 里有个方法是 application.ontime ,具体函数如下:



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

如果想进一步了解,请参阅 Excel 的帮助。


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




1.在下午 17:00:00 的时候显示一个对话框

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


2.模仿 Excel 97 里的 "自动保存宏",在这里定时 5 秒出现一次

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


以上只是两个简单的例子,有兴趣的话,可以利用 Application.Ontime 这个函数写出更多更有用的定时程序。

教你4种方法提高Excel中VBA的效率
什么是Excel宏命令
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }