对VBA中的Application.OnTime函数进行故障排除

时间:2019-03-29 16:44:15

标签: excel vba

我有一个宏,我需要每天从下午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

enter image description here



Edit1:我还在Call PopulateData之前添加了以下代码行,并且在下午1点它没有打印出来。似乎由于某种原因,它计划运行时未输入该If语句,但是当我逐步执行代码时,它可以正常输入。关于该If语句可能有什么问题的任何想法?

Debug.Print "Entered Execution Block"

编辑:是否有可能因为我在ThisWorkbook对象中有UpdateCaller而在模块1中有实际的PopulateDate导致问题了?

0 个答案:

没有答案