Application主程序对象方法(一)ontime方法

2019-10-13 15:39:57 浏览数 (4)

大家好,上节介绍application主程序对象的属性,后续开始介绍其常用方法。本节主要介绍ontime方法。

基 础 知 识

ontime方法可以安排一个过程在特定的时间运行。(既可以是具体指定的某个时间,也可以是指定的一段时间之后。)具体语法结构和参数如下:

Application.OnTime(EarliestTime,Procedure,[LatestTime],[Schedule])

1、参数EarliestTime,必选,指定想要程序在什么时间运行。

2、参数Procedure,必选,要运行的程序的名字。

3、参数LatestTime,可选,指定程序最迟运行的时间。例如,如果参数LatestTime设置为EarliestTime 30,Excel因为在运行另一个程序而在EarliestTime时没有在准备、复制、剪切或查找模式,那么Excel将等待30秒以便该程序运行完成。如果Excel在30秒内还不处于准备模式,那么程序将不再运行。如果忽略该参数,那么Excel将等待直到能够运行该程序。

4、参数Schedule,可选,设置为True来计划运行一个新的OnTime程序;设置为False来清除之前设置的程序。默认值为True。

应 用 方 式

需要注意的是:如果定义了ontime事件,即使关闭工作簿,ontime事件仍然会按设定时间发生。如果是循环的ontime事件,所以需要编写对应的停止事件的过程。

基础知识介绍完,下面通过示例来介绍如何使用application对象的ontime方法。

通常的应用场景有两种:

1、 Now TimeValue(time) 表示从现在开始计时,过一定时间后运行某个过程。

2、 TimeValue(time) 表示设定在指定的时间运行过程。

注意TimeValue(time)中的time形式是字符串形式,需要用双引号 “ ”。

具 体 示 例

下面通过示例来学习:

一、定时提醒或闹钟

首先创建一个过程,命名为tixing,程序过程是 一个简单的弹窗提示。

然后创建新的过程test,设置参数从现在开始3秒后调用该提醒过程。(此处为了演示设置3秒后运行tixing)

代码如下:创建过程tixing,设置msgbox弹窗。

Sub tixing()

MsgBox "工作时间超过两个小时,起身活动下吧"

End Sub

ontime方法,设置从现在开始计时3秒后,运行tixing过程。

Sub test()

Application.OnTime Now TimeValue("00:00:03"), "tixing"

End Sub

注意看Now TimeValue("00:00:03")中的时间的格式,注意是字符串需要双引号。同时过程名称tixing在参数中也是字符串,也需要双引号" " 。

用于设置闹钟也是同样的方式,时间直接TimeValue("17:00:00")设置确定的时间调用过程。

二、定时刷新

下面设置一个简单定时刷新。每隔10秒钟,让A2:A6单元格的数据等于C2:C6中的值。

具体代码如下,首先是定时刷新的代码:

Dim nexttime As Date

Sub test1()

'刷新数据代码

Sheet1.Range("a2:a6").Value = Sheet1.Range("c2:c6").Value

'设置重复刷新时间间隔

nexttime = Now TimeValue("00:00:10")

Application.OnTime nexttime, "test1"

End Sub

定义了nexttime为日期型变量,将它赋值为现在的时间之后10秒。然后设置ontime方法,每10秒运行一次test1。由于每次运行都会导致10秒后再运行一次,就形成了一个间隔的循环,加上更新数据的相关代码后就实现了定时刷新数据的功能。

ontime方法如果循环不能自行停止,就需要编写停止刷新的代码,如下:

Sub stoptest()

On Error Resume Next '表示程序出现错误会继续运行

Application.OnTime nexttime, "test1", , False

Application.EnableEvents = False

End Sub

注意的是代码中Application.OnTime nexttime, "test1", , False 这句的时间和调用程序都要与上个循环过程中的一致,同时最后一个参数为False。即可以清除之前的ontime方法设置。


今天下雨

本节主要介绍application主程序对象的ontime方法,其实它也可以算excel事件,后期介绍事件时也会说明。后面将会介绍其他方法,祝大家学习快乐。


0 人点赞