Excel 2010 VBA 入门 058 定时运行程序
目錄
示例? ?
實(shí)現(xiàn)代碼
Application.OnTime方法
使用Application. OnTime重復(fù)執(zhí)行程序
取消Application. OnTime定時(shí)器的方法
示例? ?
在許多時(shí)候,開發(fā)者希望能夠在指定時(shí)間運(yùn)行某個(gè)程序,該如何實(shí)現(xiàn)?本例中,希望為兩個(gè)按鈕設(shè)置代碼(如圖所示)。當(dāng)單擊“開始”按鈕后,A2單元格的時(shí)間開始啟動(dòng),并且每秒變動(dòng)一次,使其值為當(dāng)前計(jì)算機(jī)的時(shí)間;當(dāng)單擊“停止”按鈕后,則停止A2的時(shí)間變動(dòng)。該如何實(shí)現(xiàn)?
實(shí)現(xiàn)代碼
Option ExplicitDim dNextTime As DateSub StartTimer()'設(shè)定下次運(yùn)行時(shí)間為當(dāng)前時(shí)間中1秒dNextTime = DateAdd("s", 1, Now)'定時(shí)運(yùn)行程序本身Application.OnTime dNextTime, "StartTimer"'改變單元格的值為當(dāng)前時(shí)間Cells(2, 1).Value = Now End SubSub StopTimer()Application.OnTime dnexttimer, procedure:="StartTimer" End SubApplication.OnTime方法
Application. OnTime方法可以創(chuàng)建一個(gè)定時(shí)器使某個(gè)過程在指定的時(shí)間運(yùn)行,其語法如下:
Application.OnTime(EarliestTime,Procedure[[,LatestTime],Schedule])- ? ? 參數(shù)EarliestTime為預(yù)定的程序開始時(shí)間。
- ? ? 參數(shù)Procedure為過程的名稱。
- ? ? 參數(shù)LatestTime為程序最后的運(yùn)行時(shí)間。當(dāng)時(shí)間到達(dá)EarliestTime所規(guī)定的時(shí)間時(shí),若Excel程序未準(zhǔn)備好執(zhí)行程序(一般是在單元格編輯狀態(tài)或者打開某對話框),則VBA將會(huì)等待,直到Excel程序能夠開始運(yùn)行由參數(shù)Procedure所指定的過程。若設(shè)定? ? ? 了該參數(shù),則遇上述情況時(shí),若直到超過此LatestTime時(shí)Excel仍未準(zhǔn)備好執(zhí)行程序,則不會(huì)再次執(zhí)行由參數(shù)Procedure所指定的過程。
- ? ? 參數(shù)Schedule為邏輯值,當(dāng)為True(默認(rèn)值)時(shí),表示創(chuàng)建一個(gè)定時(shí)器,在由參數(shù)EarliestTime所指定的時(shí)間運(yùn)行由參數(shù)Procedure所指定的過程,當(dāng)為False時(shí),表示取消由參數(shù)EarliestTime所指定運(yùn)行時(shí)間的定時(shí)器。
使用Application. OnTime重復(fù)執(zhí)行程序
? ? 在使用OnTime方法重復(fù)執(zhí)行同一個(gè)程序時(shí),經(jīng)常采取本例所示的方法:即使用OnTime在當(dāng)前時(shí)間之后的一個(gè)時(shí)間再次執(zhí)行其語句所在的過程。當(dāng)該過程再次被執(zhí)行時(shí),OnTime語句又再次被執(zhí)行,因而又創(chuàng)建了一個(gè)定時(shí)器,使得該過程可以被反復(fù)執(zhí)行,直到參數(shù)Schedule為False的OnTime語句來取消定時(shí)器為止。
取消Application. OnTime定時(shí)器的方法
? ? 當(dāng)需要取消由OnTime方法創(chuàng)建的定時(shí)器時(shí),需要再次使用OnTime方法,并將參數(shù)Schedule設(shè)置為False。而當(dāng)使用OnTime方法撤銷定時(shí)器時(shí),必須準(zhǔn)確地給出EarliestTime參數(shù),否則程序?qū)⒊霈F(xiàn)如圖所示的錯(cuò)誤。為了避免該錯(cuò)誤的發(fā)生,可以在模塊中定義一個(gè)公共變量用以存放定時(shí)器的準(zhǔn)確時(shí)間,并在創(chuàng)建定時(shí)器時(shí)進(jìn)行記錄。當(dāng)需要取消時(shí),可以使用該變量描述準(zhǔn)確時(shí)間并傳遞給EarliestTime參數(shù)。
?
總結(jié)
以上是生活随笔為你收集整理的Excel 2010 VBA 入门 058 定时运行程序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 服务器2008修改虚拟内存,Window
- 下一篇: GRUB4DOS资源索引帖,欢迎跟帖补充