Excel实现定时器功能

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Excel VBA并没有提供定时器控件,但是用户可以通过Application对象的OnTime方法实现简单的定时器功能,如下面的代码所示。

#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单元格中不断地显示程序累计运行时间,如图66-1所示。

图66-1 简单的定时器

第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过程的定时。

下面为完整代码:

注:用EXCEL的定时器功能,也可以实现工控系统的仿真模拟运算。'启动定时器

Sub StartTimer()

'下面写入定时执行代码

'*********************

Sheet1.Cells(1, 2) = Sheet1.Cells(1, 2) + 1

'*********************

Application.OnTime Now + TimeValue("00:00:01"), "StartTimer"

End Sub

'停止定时器

Sub EndTimer()

On Error GoTo Line

Application.OnTime Now + TimeValue("00:00:01"), "StartTimer", , False '下面写入定时器停代码

'*********************

'*********************

Exit Sub

Line:

MsgBox "请先按[开始]按钮!"

End Sub

相关文档
最新文档