スケジュールされているものを取得する方法を知る方法はありません。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 がある場合は、追跡するために配列またはコレクションが必要になります。私のマクロは、実行するようにスケジュールされているかどうかに関係なく、1 つのマクロにすぎなかったので、グローバル変数/定数でうまくいきました。