代码在某个时间开始并在另一个时间停止

时间:2015-10-09 02:50:15

标签: excel vba excel-vba automation

尝试在Excel上设置宏以在某个时间启动并在另一个时间停止时,我遇到了问题。我想要实现的目标是:

报告每隔一小时在XX时产生12分钟,这只发生在每天的8:12到11:12。现在我的Excel文件从源下载报告,粘贴值并更新信息,然后它会自动将其发布为Web格式。

问题是我一直在使用以下方法来尝试实现这一目标,但一直没有成功:

Application.OnTime Now + TimeValue("00:12:00"), "Macro Name", ("23:12:00")

1 个答案:

答案 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