#001 Sub StartTimer()
#002 Sheet1.Cells(1, 2) = Sheet1.Cells(1, 2) + 1
#003 Application.OnTime Now + TimeValue("00:00:01"), "StartTimer"
#004 End Sub
代码解析:
StartTimer过程,使用Application对象的OnTime方法循环调用StartTimer过程实现每隔一秒钟运行一次StartTimer过程,从而在B1单元格中不断地显示程序累计运行时间第2行代码将B1单元格的值在原有的数字上加1。
第3行代码使用OnTime方法在1秒后重新调用StartTimer过程,使B1单元格的值不断的加1,从而显示程序累计运行时间。
应用于Application对象的OnTime方法能够安排一个过程在将来的特定时间运行,语法如下:
expression.OnTime(EarliestTime, Procedure, LatestTime, Schedule)
参数expression是必需的,返回一个Application对象。
参数EarliestTime是必需的,设置指定的过程开始运行的时间。使用Now + TimeValue(time)可以安排从现在开始经过一段时间之后运行某个过程,使用TimeValue(time)可以安排在指定的时间运行某个过程。
参数Procedure是必需的,设置要运行的过程名称。
参数LatestTime是可选的,设置过程开始运行的最晚时间。例如将参数LatestTime设置为EarliestTime+10,当时间到了EarliestTime时如果Excel不处于空闲状态,那么Excel将等待10秒,如果在10秒内Excel不能回到空闲状态,则不运行该过程。如果省略该参数,Excel将一直等待到可以运行该过程为止。
参数Schedule是可选的,如果其值为True(默认值),则安排一个新的OnTime过程,如果其值为False,则清除先前设置的过程。
取消定时的代码如下:
#001 Sub EndTimer()
#002 On Error GoTo Line
#003 Application.OnTime Now + TimeValue("00:00:01"), "StartTimer", , False
#004 Sheet1.Cells(1, 2) = 0
#005 Exit Sub
#006 Line:
#007 MsgBox "请先按[开始]按钮!"
#008 End Sub
代码解析:
EndTimer过程取消StartTimer过程的定时。
第2行代码错误处理语句,因为如果还没有运行StartTimer过程而先运行EndTimer过程取消定时,程序会提示错误,因此使用On Error GoTo Line语句在错误发生时执行第7行代码显示一个提示消息框。
第3行代码将StartTimer过程的Schedule参数设置为False,取消定时设置。