我有一个从下午5:00一直循环到第二天下午4:00的宏。宏运行2个循环,每个循环每5分钟拍摄一次数据快照。然而,到了晚上11点55分,我注意到了一个问题在11:55,它将陷入更快的循环,并开始每秒拍摄快照,直到凌晨12:00,然后它恢复正常行为。其中一个循环的上一个快照是晚上11:53,因此下一个快照应该是11:58,但它却一直等到凌晨12:00才拍摄下一个快照,然后行为正常。
因此,一个在11:55拍摄快照的循环和计划在12:00上午拍摄的下一个循环开始变得疯狂,每秒都拍摄快照,直到午夜。
另一个循环在11:53拍摄快照,并将下一次快照安排在11:58,等待7分钟,而不是编程的5分钟,并在午夜恢复正常活动。
我对application.ontime方法还很陌生,不确定是否有什么原因导致它在午夜运行时出错。任何想法都将不胜感激。
这是其中一个循环。它调用"cashHighLow“,最后返回到"repeatHighLow”。
Sub repeatHighLow()
Dim spreads As Worksheet
Set spreads = ThisWorkbook.Worksheets("Spreads")
interval = spreads.Range("c127").Value
starttime = Time + TimeValue("00:" & interval & ":00")
stop1 = TimeValue("16:00:00")
stop2 = TimeValue("18:59:00")
If starttime < stop1 Or starttime > stop2 Then Application.OnTime starttime, "cashHighlow"
结束子对象
以下是启动调度循环的初始调用:
Sub runSaves()
datecheck = Weekday(Date)
If datecheck = 6 Or datecheck = 7 Then Application.OnTime TimeValue("16:50:00"), "runSaves"
Application.OnTime TimeValue("17:23:00"), "repeatFutures"
Application.OnTime TimeValue("18:55:00"), "repeatHighLow"
Application.OnTime TimeValue("7:00:00"), "saveMidFutureClose"
Application.OnTime TimeValue("7:00:01"), "saveOverNightHighLow"
Application.OnTime TimeValue("7:00:02"), "midCashClose"
Application.OnTime TimeValue("7:00:03"), "saveCashOpen"
Application.OnTime TimeValue("7:00:04"), "saveFutureOpen"
Application.OnTime TimeValue("16:30:00"), "saveCashHighLow"
Application.OnTime TimeValue("16:30:01"), "saveFutureHighLow"
Application.OnTime TimeValue("16:30:02"), "saveFutureClose"
Application.OnTime TimeValue("16:30:03"), "saveCashClose"
Application.OnTime TimeValue("16:30:10"), "clearSnaps"
Application.OnTime TimeValue("16:50:00"), "runSaves"
End Sub
发布于 2018-02-14 02:23:01
我自己解决了这个问题,简单地避免了午夜时间。从23:59:59到00:00:00拉入的数据或Excel处理数据的方式存在问题。因此,我说,如果时间在此窗口内,则只需再添加一分钟来跳过此数据点。
https://stackoverflow.com/questions/42974138
复制相似问题