Application.ontime代码不运行

我在这里做了一些相关的研究,试着让这个代码运行,但是我仍然有问题。

我正试图在设定的时间运行一个macros。 实际上它是不同时代的一些macros。 这个macros然后将一块单元格复制到工作表上的不同区域。

我将无法使用Windows调度程序,所以我试图这样做。 我收集没有调度程序,我将不得不从一个button运行macros。 因此,我的第一个子是这个(注意button是在一个单独的数据表)

Sub Call_save() Call Sheets("Dashboard").8amsave Application.OnTime TimeValue("08:10:00"), "Call_8amsave" Call 9amsave Application.OnTime TimeValue("09:10:00"), "Call_9amsave" Call 10amsave Application.OnTime TimeValue("10:10:00"), "Call_10amsave" End Sub 

这个button被devise成然后在预定的时间运行潜艇。 它所调用的潜艇是这些:

 Sub 8amsave() Dim current_data As Variant current_data = Worksheets("Dashboard").Range("S6:V22").Value Worksheets("Dashboard").Range("B33:E49").Value = current_data End Sub Sub 9amsave() Dim current_data As Variant current_data = Worksheets("Dashboard").Range("S6:V22").Value Worksheets("Dashboard").Range("B54:E70").Value = current_data End Sub Sub 10amsave() Dim current_data As Variant current_data = Worksheets("Dashboard").Range("S6:V22").Value Worksheets("Dashboard").Range("B75:E91").Value = current_data End Sub 

现在,当我运行最初的button时,它立刻运行所有的潜艇,并立即将卖出的货物复制到正确的地方。 这对我来说真的不是问题。 然而,在预定的时间,我得到一个错误,说无法运行macros…找不到它或无法运行macros…或其他的东西。

有什么明显的东西我失踪了吗? 我一直在努力,所以我的VBA知识相当有限。 一个正确的方向将是伟大的。

您的OnTime语句也似乎引用了不存在的过程名称,即Call_8amSave而不是8amsave 。 还要注意,过程名称不能以数字(例如8amsave8amsave ,这个代码甚至不应该编译,更不要说执行了。

重命名你的过程,使它们与OnTime语句中的调用相匹配,并且是合法的过程名称,例如: Sub Call_8amSave

此外, OnTime属性一次只能有一个过程,所以你不能设置3个未来时间,你必须按顺序设置它们。 因此,在上午8点的过程中为上午9点保存OnTime

 Option Explicit Sub Call_save() Application.OnTime TimeValue("08:10:00"), "Call_8amsave" End Sub Sub Call_8amsave() With Worksheets("Dashboard") .Range("B33:E49").Value = .Range("S6:V22").Value End With Application.OnTime TimeValue("09:10:00"), "Call_9amsave" End Sub Sub Call_9amsave() With Worksheets("Dashboard") .Range("B54:E70").Value = .Range("S6:V22").Value End With Application.OnTime TimeValue("10:10:00"), "Call_10amsave" End Sub Sub Call_10amsave() With Worksheets("Dashboard") .Range("B75:E91").Value = .Range("S6:V22").Value End With End Sub