Excel VBA 之定时器 OnTime
当一个系统开始有了定时器(Timer)的时候,它就开始变得“神奇”起来。
定时器 OnTime
Excel 里,可以借助 Application.OnTime
实现定时器。
它类似于 JavaScript 里面的setTimeOut
函数, 或者 Tcl 里面的 after
命令。
下面的例子实现一个简单的数字时钟,每秒更新一次时间。
Sub TestClock()
Range("A2").Value = Format(Now, "HH:MM:SS")
Application.OnTime Now + TimeValue("00:00:01"), "TestClock"
End Sub
- 第一个参数是定时器触发的时间,是绝对时间,不是相对延迟
- 通常用
TimeValue("00:00:01")
来描述相对延迟 - 或者用
Now + TimeValue("00:00:01")
来描述绝对时间
- 通常用
- 第二个参数是需要触发的函数名称
定时器的取消
timer_start = Now + TimeValue("00:00:01")
timer_command = "SomeTask"
Application.OnTime timer_start, timer_command
Application.OnTime timer_start, timer_command, Schedule:=False
通过设置 Schedule:=False
取消具有相同触发时间和回调函数名称的定时器。