我有一个宏,我需要每天从下午6点至第二天的230pm每30分钟运行一次,我保持工作表打开。
打开工作表后,它打算在接下来的30分钟内安排UpdateCaller()宏。一旦运行,它将基本上检查当前时间是否在我的限制范围内,如果是,请致电PopulateData,然后安排下一个30分钟的时间并重复一次。
由于某些原因-我无法执行实际的Call PopulateDate。我已经将debug.print代码行添加到worksheet.open宏和updatecaller宏中,输出如下。我看到它输出了下一个预定时间,因此我知道它已成功通过两个宏运行。另外,当我进入宏并按F5时,它可以正确运行并调用PopulateData。我昨天也可以正常使用它。
我已经尝试关闭除此表格以外的所有excel工作表,然后重新启动excel,然后重新启动计算机,但是似乎没有任何作用。
任何想法/建议都将不胜感激。
Private Sub Workbook_Open()
Dim t As Long
Dim opentime As Date
t = 24 / (30 / 60)
Application.OnTime TimeValue(Format(WorksheetFunction.Ceiling(Now * t, 1) / t, "HH:mm:ss")), "UpdateCaller"
opentime = TimeValue(Format(WorksheetFunction.Ceiling(Now * t, 1) / t, "HH:mm:ss"))
Debug.Print opentime
End Sub
Public Sub UpdateCaller()
Dim tme As Date
Dim t As Long
If TimeValue(Format(Now, "HH:mm:ss")) <= TimeValue("14:30:00") Or TimeValue(Format(Now, "HH:mm:ss")) >= TimeValue("18:00:00") Then
Call PopulateData
End If
t = 24 / (30 / 60)
tme = TimeValue(Format(WorksheetFunction.Ceiling((Now + TimeValue("00:00:05")) * t, 1) / t, "HH:mm:ss"))
Debug.Print "Procedure ""UpdateCaller"" will next run at: ", tme
Application.OnTime tme, "UpdateCaller"
End Sub
Edit1:我还在Call PopulateData之前添加了以下代码行,并且在下午1点它没有打印出来。似乎由于某种原因,它计划运行时未输入该If语句,但是当我逐步执行代码时,它可以正常输入。关于该If语句可能有什么问题的任何想法?
Debug.Print "Entered Execution Block"
编辑:是否有可能因为我在ThisWorkbook对象中有UpdateCaller而在模块1中有实际的PopulateDate导致问题了?