|
最初に一度にOnTimeの設定をしないで、実行するマクロの中で
次の時刻の設定をするようにすれば、最後に設定した時刻の
分だけ解除すればいいので簡単になると思うのですが。
下記のOnTimeStopマクロをBookのBeforeCloseイベントで呼び出せば
よいでしょう。
Option Explicit
Const Interval = "00:02:00"
Dim NextTime As Single
'-- OnTime開始 --
Sub OnTimeStart()
With WorksheetFunction
NextTime = .Max(TimeValue("10:00:00"), .Ceiling(Time, TimeValue(Interval)))
End With
If Format(NextTime, "hh:nn:ss") = Format(Time, "hh:nn:ss") Then
NextTime = NextTime + TimeValue(Interval)
End If
Application.OnTime EarliestTime:=NextTime, Procedure:="Macro"
End Sub
'-- OnTimeで実行されるマクロ --
Sub Macro()
NextTime = NextTime + TimeValue(Interval)
Application.OnTime EarliestTime:=NextTime, Procedure:="Macro"
MsgBox "2分経過", , Format(Time, "hh:nn:ss")
End Sub
'-- OnTime停止 ---
Sub OnTimeStop()
On Error Resume Next
Application.OnTime EarliestTime:=NextTime, Procedure:="Macro", Schedule:=False
On Error GoTo 0
End Sub
|
|