excel application.ontime每小时运行一次,无论计时器何时启动

时间:2016-06-20 13:47:56

标签: excel vba excel-vba timer

我有一个需要在每小时更改时运行的VBA子程序。所以在7:00,8:00等...现在我可以让它每60分钟运行一次,但为了让它在一小时内运行,操作员必须在一小时内完全启动计时器。我使用的代码如下:

Public RunWhen As Double
Public Const cRunIntervalSeconds = 3600
Public Const cRunWhat = "transfer"
-----------------------------------------------------------------------
Sub StartTimer()
    RunWhen = Now + TimeSerial(0, 0, cRunIntervalSeconds)
    Application.OnTime EarliestTime:=RunWhen, Procedure:=cRunWhat, _
        Schedule:=True

End Sub

我一直试图找到一种方法让它在一小时内完全无法运行一段时间,我看起来每个地方只是告诉我要完成我已经做过的事情,并确保我完全开始小时。

例如:如果操作员在7:10之前没有到达工作站并点击运行代码的按钮,我仍然希望它在8:00然后9:00执行名为“transfer”的子程序。等等。

您如何建议我修改或添加此代码以使其完成我想要做的事情?谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

根据要求,我最喜欢的公式为答案:

RunWhen = Int(24 * Now + 1) / 24

因为:它很短,应该是100%自我解释:D