试图每隔一个小时自动运行excel vba代码。 我试着等待时间,但过了一天左右,它开始滞后

我试图每隔一个小时自动运行excel vba代码。 我试着等待时间,但过了一天左右,它开始滞后。 我希望我的代码能够每天每小时的每一分钟运行一次。 任何帮助表示赞赏。 谢谢

Sub timer() Application.OnTime Now + TimeValue("00:45:00"), "Button1_Click" End Sub Sub Button1_Click() Call SftpPut End Sub Sub SftpPut() '--takes here approximately 10-15mins to run few other things and then calls timer. Call timer End Sub 

诀窍是使Application.Ontime运行在下一个小时的开始,而不是猜测什么时候会。 这个计算是这样做的:

  Application.OnTime CDate(Int(DateAdd("h",1,Now())*24)/24), "Button1_Click" 

或者,您可以使用三个DateAdd函数计算下一个小时:

 Application.OnTime DateAdd("s", -Second(Now()), DateAdd("n", -Minute(Now()), DateAdd("h", 1, Now()))), "Button1_Click"