作者:iamlaosong 1、一般延时 一个应用接口需要限制运行速度,需要在循环中加个延时函数,这个延时不需要多么精确,要求有个几秒延时,网上用的比较多的就是用Timer函数编写,Timer是VBA自带的函数,用起来比较方便,一般程序如下: ‘延时程序 虽然一般用这个函数延迟用秒做单位,但1秒以内的延时也是可以的,老一点的机器时钟中断为每秒18.2次,就是说时间间隔在0.055秒(55毫秒)左右,现在的机器一般都比这个高,具体多少需要测试。Timer函数根据时钟中断记录当天的时间序列值,以秒为单位,也就是从当天0点开始到当前时间点上所经历的秒数(含小数)。当从23:59分钟跨越到0点是,Timer函数的时间也重新归零开始计算。通过查看函数中的timer值得变化情况,可以确定时钟中断的间隔。例如本人的机器timer值变化如下: 56742.09 delay(0.25) 由于延时函数中使用了 DoEvents语句交出了系统控制权,所以不会影响用户的其它操作。 上面方法虽然简单,但是有一个致命的缺陷,就是Timer函数的时间每天都是从0开始,如果从23:59:59开始延时1秒以上的话,这个延时程序将永远执行下去,下面的延时程序将弥补这个缺陷: ‘延时程序 2、精确延时 精确延时可以使用sleep函数,sleep函数是Windows API函数,使用前必须先声明,然后使用,例如: private Declare Sub Sleep Lib “kernel32” Alias “Sleep” (ByVal dwMilliseconds As Long) 。。。
。。。 sleep函数延时是毫秒级的,精确度比较高,但它在延时时会将程序挂起,使操作系统暂时无法响应用户操作,所以在长延时的时候不适合使用它。 3、使用timeGetTime函数进行延时 同sleep函数一样,timeGetTime函数是Windows API函数,使用前必须先声明,即: Private Declare Function timeGetTime Lib “winmm.dll” () As Long 延时函数和上面的一样,只是将Timer函数换成timeGetTime: ‘精确延时程序 |
|