如何在vba中实现vb中的Timer控件定时器功能? - VBA - ExcelOffice

如何在vba中实现vb中的Timer控件定时器功能?





vb中的Timer控件可以实现有规律地隔一段时间执行一次代码。

在vba中没有timer控件,但是Application对象的OnTime方法可以实现类似的功能。

它的作用是指定某个过程在具体的某个时间允许或者在间隔具体的时间后运行。

它的语法如下:

其中参数EarliestTime表示要运行Procedure参数所表示的过程的时间。

LatestTime参数表示由于各种原因过程没有在EarliestTime设定的时间运行,则最迟在LatestTime设定的时间运行。

Schedule参数的值可以是True或者False,默认是True。如果是True,则表示设定一个新的OnTime定时执行过程,如果是False,则表示清除一个之前设置的定时执行过程。

假设在vba中的标准模块1中有如下过程:

运行以上过程将在立即窗口中输出1。

如果我们使用Application对象的OnTime方法,运行以下过程,将于5秒后在立即窗户中输出1:

如果要循环间隔5秒后在立即窗口中输出1,则可以添加反复调用lyq过程的语句如下:

通过执行以上的过程,将永不间断的反复间隔5秒在立即窗口中输出1。

如果要终止某个Application.OnTime 则需要将当时设置的时间准确记录下来,然后将Application.OnTime的Schedule参数设置为False就可以终止。如下所示:

通过执行以上的代码,则只在立即窗口中输出1次1,就终止了之前的定时。

 

打赏

发表评论