制御 指定時間経過後又は定刻にプロシージャを実行する

※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。

※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。

Option Explicit

'===============================================
'指定時間経過後又は定刻にプロシージャを実行する
'===============================================

Dim PublicSetTime As Date


Sub OnTimeSample1()
'***********************************************
'現在から~秒後にプロシージャを実行する
'***********************************************

Dim SetTime As Date
SetTime = "00:00:05"
Application.OnTime Now + TimeValue(SetTime), "OnTimeTestSub"

End Sub


Sub OnTimeSample2()
'***********************************************
'~時にプロシージャを実行する
'***********************************************

Dim SetTime As Date
SetTime = "09:30:00"
PublicSetTime = SetTime 'OnTimeSample3用
Application.OnTime TimeValue(SetTime), "OnTimeTestSub"

End Sub


Sub OnTimeSample3()
'***********************************************
'OnTimeメソッドの設定を取り消す
'***********************************************
'OnTimeSample2を取り消す
Application.OnTime EarliestTime:=TimeValue(PublicSetTime), _
    Procedure:="OnTimeTestSub", Schedule:=False '※①

End Sub


Sub OnTimeTestSub()
    MsgBox "実行しました!"
End Sub

'OnTime メソッドの使用例(ヘルプ抜粋)
'---------------------------------------------------------------------------------

'OnTimeメソッド
'---------------------------------------------------------------------------------
'指定された時刻 (特定の日時、または特定の期間の経過後) にプロシージャを実行します。

'構文
'---------------------------------------------------------------------------------
'オブ.OnTime(EarliestTime, Procedure, LatestTime, Schedule)
'
'オブ           省略不 対象オブジェクト式指定
'EarliestTime   省略不 実行時刻指定
'Procedure      省略不 実行プロシージャ名指定
'LatestTime     省略可 プロシージャを実行できる最終時刻を指定
'Schedule       省略可 新しいOnTimeプロシージャを設定
'---------------------------------------------------------------------------------
'補足 LatestTime
'EarliestTimeで設定した値 + 30 を設定します。
'EarliestTimeに指定した時刻には他のプロシージャを実行しているため、
'Excelが待機/コピー/切り取り/検索のいずれのモードでもないとします。
'その場合Excelは実行中のプロシージャが終了するまで30秒間待ちます。
'30秒以内にExcelが待機 モードにならないとき指定したプロシージャは実行されません。
'この引数を省略すると、Excel はプロシージャが実行できるまで待ちます。
'---------------------------------------------------------------------------------
'補足 Schedule ※①
'新しいOnTimeプロシージャを設定するには、True を指定
'直前のプロシージャの設定を解除するには、False を指定

 

2000年01月01日|[VBサンプルコード]:[制御]