excel vba Application.OnTime

时间:2013-11-20 16:25:09

标签: excel vba excel-vba timer

上周我问了一个关于这个的问题here我按要求发布了我的代码,但没有回答。无论如何,我有一些更具体的问题。

重置 计时器时,过程参数的目的是什么? 与Schedule:=False进行回叫是没有意义的。 如果回调函数不再适用于范围,会发生什么?定时器是否仍然正常复位?这就是为什么我见过的大多数例子(包括Chip Pearson - 不幸的是,由于某种原因我不允许包含链接)继续OnTimeOn Error Resume Next电话进行 抱歉再次提问,但为什么要这样做?

我的理解是计时器是由 EarliestTime 参数注册的,而这是唯一标识它的计时器的“序列号”。
过程参数是否也包含在注册和后续识别过程中?

如果回调过程包含在定时器触发时不再存在的对象中,会发生什么?或者更一般地说,如果在计时器触发并尝试执行回调过程时出现错误会发生什么?

如果包含 LatestTime 参数,那么如果计时器无法启动,会发生什么? Windows是否完全擦除了计时器?

1 个答案:

答案 0 :(得分:0)

我的理解是计时器是由EarliestTime参数注册的,这是"序列号"用于唯一标识它的计时器。

不确定你在哪里读到这个?这并不是一件明智的事情,但您原则上可以使用相同的OnTime安排两次或更多EarliestTime次运行。所以这并不能使它独一无二。 EarliestTimeProcedure的组合使其独一无二。

重置计时器时,Procedure参数的目的是什么?

不确定你的意思"重置"计时器;你的意思是用OnTimeSchedule := True来呼叫Schedule := False

无论哪种方式,如果你没有指定Procedure参数,它应该怎么知道运行哪个程序(或哪个程序运行取消)?这就是它的用途。

我建议你尝试一下并说服自己。

如果回叫过程包含在定时器触发时不再存在的对象中,会发生什么?或者更一般地说,如果在计时器触发并尝试执行回叫程序时出现错误会发生什么?

嗯,你有没有尝试过为自己找到答案?没有什么神秘的事情发生。您像往常一样收到错误消息。

如果包含LatestTime参数,那么如果计时器无法启动,会发生什么? Windows是否完全擦除了计时器?

我想你可以这样说。该程序不会被运行。请参阅VBA帮助:

  

例如,如果LatestTime设置为EarliestTime + 30且Microsoft Excel未在EarliestTime中处于Ready,Copy,Cut或Find模式,因为另一个过程正在运行,Microsoft Excel将等待30秒以完成第一个过程。如果Microsoft Excel在30秒内未处于就绪模式,则不会运行该过程。