在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
是不好的做法,但是你明白了。