在Excel中创build一个macros,每2秒执行一次macros

我有一个名为UpdateMacro的macros,它从我的Excel更新我的数据库

我想创build一个名为RepeatMacro的macros,它每2秒自动执行一次UpdateMacro并且只提供启动和停止button来启动和停止RepeatMacro执行。

如何做呢?

Google for Application.OnTime

例如

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

要清除以前设置的过程,您需要保存调度的时间,例如上面的dtNextRunTime),然后使用:

 Application.OnTime dtNextRunTime, "MyProcedure", False 

下面是一个带有方法StartSchedule / StopSchedule的示例VB模块,可以帮助您:

 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 

这将运行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 ,使开始button和停止button,并将下面的代码放在您的图表模块。 另外请注意,我在上面的RepeatMacro添加了一个DoEvents

 Private Sub StartButton_Click() Call RepeatMacro End Sub Private Sub StopButton_Click() MsgBox "Stopped." End End Sub 

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