作者:iamlaosong 1、一般延時 一個應用接口需要限制運行速度,需要在循環(huán)中加個延時函數,這個延時不需要多么精確,要求有個幾秒延時,網上用的比較多的就是用Timer函數編寫,Timer是VBA自帶的函數,用起來比較方便,一般程序如下: ‘延時程序 雖然一般用這個函數延遲用秒做單位,但1秒以內的延時也是可以的,老一點的機器時鐘中斷為每秒18.2次,就是說時間間隔在0.055秒(55毫秒)左右,現在的機器一般都比這個高,具體多少需要測試。Timer函數根據時鐘中斷記錄當天的時間序列值,以秒為單位,也就是從當天0點開始到當前時間點上所經歷的秒數(含小數)。當從23:59分鐘跨越到0點是,Timer函數的時間也重新歸零開始計算。通過查看函數中的timer值得變化情況,可以確定時鐘中斷的間隔。例如本人的機器timer值變化如下: 56742.09 delay(0.25) 由于延時函數中使用了 DoEvents語句交出了系統(tǒng)控制權,所以不會影響用戶的其它操作。 上面方法雖然簡單,但是有一個致命的缺陷,就是Timer函數的時間每天都是從0開始,如果從23:59:59開始延時1秒以上的話,這個延時程序將永遠執(zhí)行下去,下面的延時程序將彌補這個缺陷: ‘延時程序 2、精確延時 精確延時可以使用sleep函數,sleep函數是Windows API函數,使用前必須先聲明,然后使用,例如: private Declare Sub Sleep Lib “kernel32” Alias “Sleep” (ByVal dwMilliseconds As Long) 。。。
。。。 sleep函數延時是毫秒級的,精確度比較高,但它在延時時會將程序掛起,使操作系統(tǒng)暫時無法響應用戶操作,所以在長延時的時候不適合使用它。 3、使用timeGetTime函數進行延時 同sleep函數一樣,timeGetTime函數是Windows API函數,使用前必須先聲明,即: Private Declare Function timeGetTime Lib “winmm.dll” () As Long 延時函數和上面的一樣,只是將Timer函數換成timeGetTime: ‘精確延時程序 |
|