3

我正在 Excel 中设计一个类似仪表板的工作簿,并且我创建了一个例程来不时使用 Application.OnTimeExcel VBA 中的方法自动显示一些图表,但是我在调​​试我的例程时遇到了一些问题。

有三个预定例程:第一个为图表拍摄数据快照,第二个开始图表的展示,第三个,由第二个开始,循环浏览图表,显示它们一小段时间

我的主要问题是跟踪例程的最后一次执行,因为他们每个人都安排自己Application.OnTime

所以我有两个问题:

一:有没有办法从Application.OnTimeExcel 中查看预定的例程?

二:有没有更好的方法来使用 VBA 来安排重复的例程?

4

1 回答 1

2

我不知道如何得到预定的内容。当我调试一个使用 OnTime 的程序时,我制作了自己的日志,这样我就可以看到安排了什么以及什么时候安排的。

Public Function WriteLog(bSchedule As Boolean) As Boolean

    Dim sFile As String, lFile As Long
    Dim sOutput As String
    Dim bReturn As Boolean

    Const sSOURCE As String = "WriteLog()"

    On Error GoTo ErrorHandler
    bReturn = True

    sFile = Environ("USERPROFILE") & gsLOGPATH & gsTIMERLOG
    lFile = FreeFile

    sOutput = bSchedule
    sOutput = sOutput & "," & gdtNextRun
    sOutput = sOutput & "," & gsSCHEDMACRO
    sOutput = sOutput & "," & Format(Now, "mm/dd/yyyy hh:mm:ss")

    Open sFile For Append As lFile

    Print #lFile, sOutput

    Close lFile

ErrorExit:
    On Error Resume Next
    WriteLog = bReturn
    Exit Function

ErrorHandler:
    bReturn = False
    If bCentralErrorHandler(msMODULE, sSOURCE) Then
        Stop
        Resume
    Else
        Resume ErrorExit
    End If

End Function

这使用了错误处理系统,因此您必须为自己修复它或删除错误处理的东西。

  • gdtNextRun 是下一次计划运行的全局日期变量
  • gsSCHEDMACRO 是一个全局字符串常量,宏将为其运行
  • bSchedule 记录我正在安排还是不安排。

如果您有多个 OnTimes,则需要一个数组或集合来跟踪。我的只是一个计划运行或不运行的宏,所以我的全局变量/常量成功了。

于 2012-10-08T16:44:21.943 回答