Application.Ontime イベントを使用して、セルから時間フィールドを取得し、その時間に実行するサブルーチンをスケジュールしています。私の Application.Ontime イベントは Workbook_BeforeSave イベントで実行されます。そのため、ユーザーが(目的の時間を変更してブックを保存する)複数回実行すると、複数の Application.Ontime イベントが作成されます。理論的には、一意の時間変数を使用して各イベントを追跡できますが、保留中のイベントを確認/解析/キャンセルする方法はありますか?
Private Sub Workbook_BeforeSave
SendTime = Sheets("Email").Range("B9")
Application.OnTime SendTime, "SendEmail"
End Sub
Private Sub Workbook_BeforeClose
Application.OnTime SendTime, "SendEmail", , False
End Sub
B9 を 12:01 に変更し、B9 を12:03
に変更したワークブックを保存し、
B9 を 12:05 に変更したワークブックを保存し、
B9 を 12:07 に変更したワークブックを保存し、ワークブックを保存します
。
最終的に複数のイベントが発生します。1 つのイベントのみを発生させたい (最近スケジュールされたもの)
Workbook_BeforeClose イベントですべての保留中のイベントをキャンセルする (または少なくともそれらを列挙する) にはどうすればよいですか?