我有一个名为UpdateMacro
宏从更新我的数据库我的Excel创建在Excel宏其执行其他宏观每2秒
我想创建一个宏名为RepeatMacro
它会自动执行UpdateMacro
每2秒并且仅提供启动和停止按钮来启动和停止执行RepeatMacro
。
怎么办?
我有一个名为UpdateMacro
宏从更新我的数据库我的Excel创建在Excel宏其执行其他宏观每2秒
我想创建一个宏名为RepeatMacro
它会自动执行UpdateMacro
每2秒并且仅提供启动和停止按钮来启动和停止执行RepeatMacro
。
怎么办?
谷歌为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
感谢您的输入。我检查了'Application.OnTime',并得到了一个印象,它是在指定的时间运行宏。但是我不需要在特定的时间运行宏。我想在整个24小时内每秒运行一次。所以我不能只指定时间。什么可以是其他选择? – 2011-03-28 06:58:51
@PARTH,那么,在宏的末尾,你有2秒后设置一个新的计时器... – jswolf19 2011-03-28 07:11:53
@ jswolf19:谢谢乔。是的,不要忘记@ jswolf19在做出这个答案时的贡献。感谢JsWolf19,你的链接帮助了很多。 :) :)感谢你们两个。有效..!! – 2011-03-28 11:04:09
这将运行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
是不好的做法,但你明白了。
@ Jean-Francois Corbett:谢谢你的回复。如何停止这个RepeatMacro? – 2011-03-28 08:35:25
@PARTH:编辑我的答案来解决这个问题。 – 2011-03-28 09:57:38
是的,我读过它。谢谢:)我会尽快尝试代码并回复你 – 2011-03-28 09:59:44
您是否考虑过在必要时进行更新,而不是每2秒更新一次? [This](http://www.cpearson.com/excel/OnTime.aspx)可能有助于你目前的要求,虽然... – jswolf19 2011-03-28 06:57:59
@ jswolf19:不,这是我的应用程序的neccesity每更新一次2-3秒。 – 2011-03-28 07:00:46