2011-03-28 80 views
1

我有一個名爲UpdateMacro宏從更新我的數據庫我的Excel創建在Excel宏其執行其他宏觀每2秒

我想創建一個宏名爲RepeatMacro它會自動執行UpdateMacro每2秒並且僅提供啓動和停止按鈕來啓動和停止執行RepeatMacro

怎麼辦?

+1

您是否考慮過在必要時進行更新,而不是每2秒更新一次? [This](http://www.cpearson.com/excel/OnTime.aspx)可能有助於你目前的要求,雖然... – jswolf19 2011-03-28 06:57:59

+0

@ jswolf19:不,這是我的應用程序的neccesity每更新一次2-3秒。 – 2011-03-28 07:00:46

回答

2

谷歌爲Application.OnTime

例如

Dim dtNextRunTime As Date 
dtNextRunTime = Now + TimeSerial(0,0,2) 
Application.OnTime dtNextRunTime, "MyProcedure", True 

要清除以前設置的過程,您需要保存調度的時間) dtNextRunTime以上),然後用:

Application.OnTime dtNextRunTime, "MyProcedure", False 

下面是一個示例VB模塊方法StartSchedule/StopSchedule讓你去:

Private m_dtScheduledTime As Date 
Private m_lDelaySeconds As Long 
Private m_bIsScheduled As Boolean 

Private Sub DoWork() 

    m_bIsScheduled = False 

    ' ... do your work 

    ' Reschedule at the same frequency once completed 
    StartSchedule m_lDelaySeconds, "DoWork" 

End Sub 

Public Sub StartSchedule(ByVal DelaySeconds As Long) 
    StopSchedule 
    m_lDelaySeconds = DelaySeconds 
    m_dtScheduledTime = Now + TimeSerial(0, 0, m_lDelaySeconds) 
    Application.OnTime m_dtScheduledTime, "DoWork", True 
    m_bIsScheduled = True 
End Sub 

Public Sub StopSchedule() 
    If m_bIsScheduled Then 
     Application.OnTime m_dtScheduledTime, "DoWork", False 
     m_bIsScheduled = False 
    End If 
End Sub 
+0

感謝您的輸入。我檢查了'Application.OnTime',並得到了一個印象,它是在指定的時間運行宏。但是我不需要在特定的時間運行宏。我想在整個24小時內每秒運行一次。所以我不能只指定時間。什麼可以是其他選擇? – 2011-03-28 06:58:51

+2

@PARTH,那麼,在宏的末尾,你有2秒後設置一個新的計時器... – jswolf19 2011-03-28 07:11:53

+0

@ jswolf19:謝謝喬。是的,不要忘記@ jswolf19在做出這個答案時的貢獻。感謝JsWolf19,你的鏈接幫助了很多。 :) :)感謝你們兩個。有效..!! – 2011-03-28 11:04:09

0

這將運行UpdateMacro每兩秒鐘,假設UpdateMacro花費不到兩運行幾秒鐘。

Sub RepeatMacro() 
    Dim lastRunTime 
    Do 
     lastRunTime = Now 
     Range("A1") = "Last run: " & Format(lastRunTime, "hh:nn:ss") 
     Call UpdateMacro 
     DoEvents 
     Application.Wait lastRunTime + TimeValue("00:00:02") 
    Loop 
End Sub 

Sub UpdateMacro() 
    Debug.Print "running UpdateMacro" 
End Sub 

編輯啓動並從您的薄片停止RepeatMacro,使一個啓動按鈕和停止按鈕,並把下面的代碼你的表模塊中。另外請注意,我在上面的RepeatMacro中添加了一個DoEvents

Private Sub StartButton_Click() 
    Call RepeatMacro 
End Sub 

Private Sub StopButton_Click() 
    MsgBox "Stopped." 
    End 
End Sub 

現在只是說End是不好的做法,但你明白了。

+0

@ Jean-Francois Corbett:謝謝你的回覆。如何停止這個RepeatMacro? – 2011-03-28 08:35:25

+0

@PARTH:編輯我的答案來解決這個問題。 – 2011-03-28 09:57:38

+0

是的,我讀過它。謝謝:)我會盡快嘗試代碼並回復你 – 2011-03-28 09:59:44