【Excel VBA编程】边玩边学:给你的宏代码定个闹铃,按时自动执行
- 2026-09-21 23:30:38
总是听到或看到有人问,编程好学吗?如何入门?多久能学会?它能做些什么?怎么写代码呀?执行过程中出问题了谁能帮帮我...如果你也有类似的问题那就赶快关注我的公众号,一起学起来吧!
有没有遇到过这样的场合:在对数据分析时,需要定期(每天、每周)对大量数据进行汇总、统计;定时清理电脑或服务器上临时文件、过期的日志文件等
如果能设置好时间让宏代码定时执行就好了,这时就需要用到Application.OnTime
为了更好地展示其实现效果,安排了一个小小的案例,咱们边玩边学,知识就这么水灵灵地钻进了脑子里

效果展示
之所以能实现这个功能,核心是利用了Application.OnTime方法。这个方法就像一个内置的“定时触发器”,可以轻松地让代码按照我们设定的固定时间间隔自动执行

代码及说明
代码实现逻辑:利用Application.OnTime方法,我们安排一个名为RepeatTask的过程(宏),让它在2秒后自动执行一次。其核心在于:每当RepeatTask过程运行完毕后,它会再次调用Application.OnTime,重新设定自己下一次的执行时间(2秒)。这样,程序就形成了一个自我循环的任务链条
如果想终止这个任务链条,只需要在其参数列表的最后增加"Schedule:=False”即可,在参考代码中的StopTimer内就有用到
Option ExplicitPublic blockRange As RangePublic NextRunTime As DoublePublic TimerEnabled As Boolean'每2秒执行一次Sub StartTimer()Dim ws As WorksheetSet ws = ThisWorkbook.Worksheets("Sheet1")'初始化一个L形状的区域Set blockRange = Union(ws.Range("F7"), ws.Range("F8"), ws.Range("F9"), ws.Range("G9"))blockRange.Interior.Color = RGB(255, 165, 0) ' 设置为橙色TimerEnabled = True' 安排在2秒后执行名为 "RepeatTask" 的过程NextRunTime = Now + TimeValue("00:00:02")Application.OnTime EarliestTime:=NextRunTime, Procedure:="RepeatTask"End Sub'下落动作Sub RepeatTask()If Not TimerEnabled Then Exit SubDim newRange As RangeblockRange.Interior.Color = vbWhiteSet newRange = blockRange.Offset(1, 0)newRange.Interior.Color = RGB(255, 165, 0) ' 设置为橙色Set blockRange = newRange' 安排下一次执行(2秒后)NextRunTime = NextRunTime + TimeValue("00:00:02")Application.OnTime EarliestTime:=NextRunTime, Procedure:="RepeatTask"End Sub'停止Sub StopTimer()TimerEnabled = FalseOn Error Resume NextApplication.OnTime EarliestTime:=NextRunTime, Procedure:="RepeatTask", Schedule:=FalseEnd Sub
打开你的.xlsm文件
按下 Alt + F11 快捷键,打开VBA编辑器
选择 “插入” -> “模块”,将上述代码粘贴到新模块中
回到Excel中的Sheet1工作表,工作栏中依次选择【开发工具】【插入】【表单控件】,添加两个按钮,然后命名为“开始”和“停止”,并分别关联宏代码StartTimer和StopTimer(添加按钮时会有提醒,选中宏代码关联即可)


结束语
好了,今天的分享到此结束了,咱们下期继续!
本公众号一直在不间断地分享免费的编程案例和实用技巧。无论您是用来提升自动化办公效率还是想提升自我,请关注我的公众号,解锁更多的编程知识