指定した時刻にマクロを実行するには、ApplicationオブジェクトのOnTimeメソッドを使います。

アラームやラーメンタイマーなどいろいろと使えそうです。

指定時間にマクロを実行する

■OnTimeメソッド構文:

Application.OnTime(EarliestTime, Procedure, LatestTime, Schedule)

引数の説明 (引数とは、関数に渡すパラメータ[括弧内の変数]です)
VBA入力画面
Excel 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セルに”マクロを実行しました”と表示されました。
1回目のOnTimeメソッド結果

2回目(5秒後)のOnTimeメソッドです。
B3セルに”再開し終了しました”と表示されました。
2回目のOnTimeメソッド結果

Excelマクロのサンプルファイル:フリーダウンロード








Copyright (C) excel.usefulhp.com All rights reserved.