尝试在Excel上设置宏以在某个时间启动并在另一个时间停止时,我遇到了问题。我想要实现的目标是:
报告每隔一小时在XX时产生12分钟,这只发生在每天的8:12到11:12。现在我的Excel文件从源下载报告,粘贴值并更新信息,然后它会自动将其发布为Web格式。
问题是我一直在使用以下方法来尝试实现这一目标,但一直没有成功:
Application.OnTime Now + TimeValue("00:12:00"), "Macro Name", ("23:12:00")
答案 0 :(得分:2)
您需要递归运行OnTime
方法。创建一个这样的过程ScheduleNext
(逻辑可能会更精确,但如果需要你可以解决这个问题......)并在早上运行它。这将在上午8:12开始你的程序。
Sub ScheduleNext()
'Schedules the macro to run again in one hour
If TimeValue(Now) < TimeValue("08:12:00 AM") Then
Application.OnTime TimeValue("08:12:00 AM"), "MyMacro"
ElseIf TimeValue(Now) < TimeValue("11:12:00 PM") Then
Application.OnTime Now + TimeValue("01:00:00"), "MyMacro"
End If
End Sub
现在,在End Sub
之前的程序中,拨打ScheduleNext
。这一次,它将安排程序在一小时内再次运行。
Sub MyMacro()
''' your code ...
Debug.Print "Time is " & TimeValue(Now)
ScheduleNext 'Calls the schedule to run again in one hour
End Sub