? asked in 電腦與網際網路程式設計 · 1 decade ago

急急急~如何讓vba每隔一分鐘執行一次sub?

那個sub裡面都是一些下載及計算的程式。

我必須利用每一分鐘下載一次最新的資訊後,再透過該sub計算最新的值出來。

下載及計算的程式碼都寫在那個sub裡面了。

但是我不知道要用什麼方法讓電腦自動隔一分鐘跑一次那個sub?

請問有什麼方法嗎?謝謝。

4 Answers

Rating
  • 1 decade ago
    Favorite Answer

    以下兩個方法是每隔1秒就執行,自己改成你要的吧 ^_^

    方法一:

    Private Declare Function SetTimer Lib "user32" (ByVal hWnd As _

    Long, ByVal nIDEvent As Long, ByVal uElapse As Long, _

    ByVal lpTimerFunc As Long) As Long

    Private Declare Function KillTimer Lib "user32" (ByVal hWnd As _

    Long, ByVal nIDEvent As Long) As Long

    Dim hTimer

    Sub TimerProc()

    Range("A1") = Format(Now, "hh:mm:ss AM/PM")

    End Sub

    Sub Init(Interval&)

    hTimer = SetTimer(0, 0, Interval, AddressOf TimerProc)

    End Sub

    Sub Terminate()

    Call KillTimer(0, hTimer)

    End Sub

    Sub beginTest()

    Init 1000

    Call XXXX '你的SUB

    End Sub

    方法二:

    Sub StartTimer()

    DoEvents

    Application.OnTime Now + TimeValue("00:00:01"), "StartTimer2", Schedule:=True

    End Sub

    Sub StartTimer2()

    DoEvents

    Call MySubFunc '你的SUB

    Call StartTimer

    End Sub

    Sub StopTimer()

    On Error Resume Next

    Application.OnTime Now + TimeValue("00:00:01"), "StartTimer2", Schedule:=False

    End Sub

  • 1 decade ago

    Jacklu提供的兩種方法我都試了, 我是在專案裡插入一個模組, 把程式碼複製到模組裡去修改執行, 方法二沒有問題, 我用兩個按鈕分別 call StartTimer和 StopTimer。方法一的 Terminate無法使其停止, 我是用 Excel 2000測試的。

  • 1 decade ago

    有嘗試過 TIMER 物件了嘛

  • W.J.S.
    Lv 7
    1 decade ago

    是Excel還是Access?

Still have questions? Get your answers by asking now.