字體:小 中 大 |
|
|
|
| 2023/06/01 08:42:49瀏覽37|回應0|推薦0 | |
Excel VBA 自製Timer 的運用 今天同事向我請教,如何讓Excel的資料表能自動每隔一段時間,啟動一次某一個欄位資料的排序,我說這要用Timer元件,在VB是可以輕易寫的。Excel VBA我還沒寫過,查了VBA也沒有這個元件。 他上網照所我說的用Exce VBA Timer,果然線上有解說如何變通,有現成的可用,因而為之複製取用來改寫,當埸完成了他的需求。 今晚意興分享,故再找一次,卻不是原先那份資料,寫法有些不同,運用時也不同,差別用兩個程序相互呼叫,不同於自身呼叫的遞回,其中止是用: Application.OnTime Now + TimeValue("00:00:01"), "Timer", schedule:=False 目的雖然一樣,卻有個缺點,當本身已在背景自動更新資料表資料時,這個用指令來中止那個背景自動更新資料的運行,是有問題的,無法將之停止,因此改用變通的方法解決了。 而今晚查到這個寫法,就沒有上述的問題,因此就拿以下這些內容講解,並將運用說明,希望有助他人使用。
Dim TimerActive As Boolean '用一個按鈕當啟動鈕,將此程序加上來 Sub StartTimer() Start_Timer End Sub
'用一個按鈕當停止鈕,將此程序加上來 Sub StopTimer() Stop_Timer End Sub
Private Sub Start_Timer() TimerActive = True '取消這一行,是為了減少第一次的等待時間,而直接呼叫Timer() 'Application.OnTime Now() + TimeValue("00:00:03"), "Timer" Timer End Sub
Private Sub Stop_Timer() TimerActive = False End Sub
Private Sub Timer() If TimerActive Then ActiveSheet.Cells(1, 1).Value = Time '以下可以寫,在啟動Timer後,要做的事件 '例如會隨時異動的資料,每隔一段時間就自動排序一次 '這個排序規則,由自己訂,用錄製巨集產生,再複製程式碼到這個地方 '………………………. '其他解說 'TimeValue("00:00:03"),系統每次要經過的時間,即間隔時間 '"Timer"是呼叫函式或程序的名稱,是Application.OnTime 附加的參數 '這是一個自己呼叫自己的遞回程序,所以用If TimerActive Then給與停止的條件。 Application.OnTime Now() + TimeValue("00:00:03"), "Timer" End If End Sub 以上這是我取自網路之內容加註並解說如何運用: |
|
| ( 不分類|不分類 ) |











