如果我通过Application.OnTime将预定的过程复制到Excel文档,是否将计划复制到新文档?

这是一个非常简单的问题,但我无法在任何地方find答案。

也许一些更多的信息是必要的。 我有一个工作簿,将来有一些程序的时间表。

现在我知道有没有简单的方法来摆脱时间表,所以我不知道我是否要复制文件,时间表是否也被复制?

使用Application.OnTime您可以在当前Application对象的作用域内安排过程。 例如,如果closures它,所有活动的时间表将被取消。

可能是计划运行设置在Workbook_Open事件或类似的事件中 – 在这种情况下,一旦打开(复制或原始)文档,计划将立即恢复。

正如Zeretil所言,他的回答是:日程安排将在创build日程时参考工作手册的程序。 当您复制并打开工作簿时,这不会更改,副本中的过程当然不会运行。 如果您closures与原始工作簿的应用程序,计划也将停止运行。

最后但并非最不重要:通过使用OnTime方法的Schedule参数,可以轻松地取消当前工作簿中的Schedule :取消过程“test”的计划:

编辑:在可变时间包括时间表+在设定的时间取消

 Sub RunTestOnTime() Dim eTime as Variant eTime = Now() + TimeValue("00:00:20") 'Store the time in a variable Application.Ontime EarliestTime:=eTime, Procedure:="test" 'Schedule it Application.OnTime EarliestTime:=eTime, Procedure:="test", Schedule:=False 'Delete schedule. End Sub 

完整的MSDN上OnTime方法的文档

所以,因为我是一个非常不耐烦的人,我决定自己testing一下。

这是我使用的代码:

Testcode

当“testing”程序每隔20秒正确执行时,我复制并打开工作簿的副本。 工作簿

时间表事实上并没有被复制,所以复制和replace文件看起来像是摆脱OnTime事件的最简单的解决scheme。 将文档重命名为原始名称不会导致计划在复制的文档上运行。