我目前有一个宏到达目录并将一些数据提取到我的电子表格中。最初我只有一个按钮来显示信息,一个按钮可以删除所有内容,但需要更改,我现在需要它自动运行宏来清除现有数据,然后每小时左右提取新数据。
通过不同的方式查看我可能会暂停宏的方法似乎是循环是最适合我的方式,因为它可以让我在等待运行时仍然与电子表格进行交互。
所有这一切都说,这就是我现在所拥有的,它似乎只是简单地遍历所有内容而根本没有暂停。
在宏的末尾,我使用以下
Call DelayOneHour
Call RepActiveTicketsDelete
Call DelayTwoSeconds
Call RepActiveTicketsDataGrab
这是循环
Sub DelayOneHour()
Dim NowTick As Long
Dim EndTick As Long
NowTick = Now
EndTick = Now + TimeValue("0:01:00")
Do Until NowTick >= EndTick
DoEvents
NowTick = Now()
Loop
End Sub
Sub DelayTwoSeconds()
Dim NowTick As Long
Dim EndTick As Long
NowTick = Now
EndTick = Now + TimeValue("0:01:00")
Do Until NowTick >= EndTick
DoEvents
NowTick = Now()
Loop
End Sub
感谢您的期待!
答案 0 :(得分:2)
我认为Application.OnTime
是一种有效安排程序以便稍后运行的方法。这释放了运行时环境(即,您可以在介入的1小时内运行其他工作簿中的其他宏等)。
而不是:
Call DelayOneHour
Call RepActiveTicketsDelete
Call DelayTwoSeconds
Call RepActiveTicketsDataGrab
这样做:
'Run the specified procedure in one hour:
Application.OnTime Now + TimeValue("00:60:00"), "RepActiveTicketsDelete"
Exit Sub
然后,在RepActiveTicketsDelete
程序结束时,您安排了RepActiveTicketsDataGrab
程序:
'Run the specified procedure in two seconds:
Application.OnTime Now + TimeValue("00:00:02"), "RepActiveTicketsDataGrab"
Exit Sub