指定した時刻にマクロを実行するには、ApplicationオブジェクトのOnTimeメソッドを使います。
アラームやラーメンタイマーなどいろいろと使えそうです。
指定時間にマクロを実行する
■OnTimeメソッド構文:
Application.OnTime(EarliestTime, Procedure, LatestTime, Schedule)
引数の説明 (引数とは、関数に渡すパラメータ[括弧内の変数]です)
- EarliestTime : (省略不可) マクロを実行する時刻
- Procedure : (省略不可) 指定した時刻に実行するプロシージャ名
- LatestTime : (省略可) もし指定した時刻に他のマクロが実行されている場合の待ち時間
- Schedule : (省略可) OnTimeメソッドの有効/無効の設定(既定値:True)、(無効:False)
VBA入力画面
入力したコードです。
Sub 指定時間にマクロを開始()
Dim stime As Date
Range("C5") = ""
Range("B3") = ""
Range("A1").Select
stime = Now + TimeValue("00:00:03")
Application.OnTime TimeValue(stime), "マクロ実行内容", TimeValue("00:05:00")
End Sub
Sub マクロ実行内容()
Range("C5").Select
Range("C5") = "マクロを実行しました"
Application.OnTime Now + TimeValue("00:00:5"), "再開"
End Sub
Sub 再開()
Range("B3").Select
Range("B3") = "再開し終了しました"
End Sub
プログラムの説明
Subプロシージャの宣言
Sub 指定時間にマクロを開始()
日付型の変数を宣言
Dim stime As Date
表示セルをクリア
Range("C5") = ""
表示セルをクリア
Range("B3") = ""
A1セルに移動
Range("A1").Select
3秒後の時刻を取得
stime = Now + TimeValue("00:00:03")
OnTimeメソッドを実行 3秒後にマクロ実行内容マクロを開始する、もしマクロ実行中の場合5秒後に実行する
Application.OnTime TimeValue(stime), "マクロ実行内容", TimeValue("00:05:00")
プロシージャの終了
End Sub
Subプロシージャの宣言
Sub マクロ実行内容()
C5セルに移動
Range("C5").Select
C5セルに文字列表示させる
Range("C5") = "マクロを実行しました"
OnTimeメソッドを再度実行 5秒後に再開マクロを開始する
Application.OnTime Now + TimeValue("00:00:5"), "再開"
プロシージャの終了
End Sub
Subプロシージャの宣言
Sub 再開()
B3セルに移動
Range("B3").Select
B3セルに文字列表示させる
Range("B3") = "再開し終了しました"
プロシージャの終了
End Sub
指定時間にマクロを実行するマクロの実行画面
「指定時間にマクロを開始」マクロを実行します。
1回目(3秒後)のOnTimeメソッドです。
C5セルに”マクロを実行しました”と表示されました。
2回目(5秒後)のOnTimeメソッドです。
B3セルに”再開し終了しました”と表示されました。
Excelマクロのサンプルファイル:
フリーダウンロード
Copyright (C) excel.usefulhp.com All rights reserved.