エクセルバージョン
マイクロソフト365
今回はVBAの実行中に時間を指定して、指定時間待機や一定間隔で処理ができるApplicationオブジェクトのWaitメソッドについてです。
それではいってみましょう!
Waitメソッド
概要
実行中のマクロを時間指定して停止させ、指定時間に達したらTrueを返します。
構文
Application.Wait (Time)
引数
Wait | 必須/省略可 | 詳細 |
Time (第1引数) | 必須 | 時間をエクセルの時間の書式で指定。 |
サンプル
3秒待ってから処理
3秒待ってからメッセージボックスを表示します。
1 2 3 4 5 6 7 8 | Sub WaitSample1() '①3秒待ってから動作させる Application.Wait TimeSerial(Hour(Now), Minute(Now), Second(Now) + 3) '②メッセージボックスを表示 MsgBox "START!" End Sub |
①TimeSerial関数を使用して時分秒をHour, Minute, Secondの引数にNow関数をいれて現在時間から3秒待ちます。
➁メッセージボックスに表示させます。
1秒間隔に処理
1秒ごとに変数iをイミディエイトウィンドウに表示させます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Sub WaitSample2() '変数 Dim i As Integer '①For文のStepキーワードで繰り返し処理 For i = 3 To 0 Step -1 '②1秒ごとに変数iの値をイミディエイトに表示 Application.Wait (Now + TimeValue("0:00:01")) '③変数iをイミディエイトに表示 Debug.Print i Next End Sub |
①For~Nextで繰り返し処理をし、Stepキーワードで-1ずつ減少させ3回くりかえします。
➁Now関数で現在日時から、TimeValue関数で1秒指定しで1秒間隔に動作させます。
③イミディエイトウィンドウに 変数 i を表示させます。
ミリ秒での処理
1ミリ秒の間隔でセルに1行ずつ書き出す例です。
1 2 3 4 5 6 7 8 | Sub WaitSample3() Dim i As Integer For i = 1 To 20 Cells(i, 1) = i Application.Wait [Now() + "0:00:00.1"] Next End Sub |
まとめ
実行中処理を止めて再度実行する場合や、一定間隔で処理を実行したい場合などありましたらご使用してみてください!
以上です。
関連記事
【VBA】処理時間を測定したり,待ってから動作させるTimer