VBA Waitメソッド ~メソッドの解説と使用例~

VBA Waitメソッド ~メソッドの解説と使用例~

ENGINEER.CLUB編集部

ENGINEER.CLUB編集部

VBAでマクロを作成しているときに、「特定の時間に処理を再開したい」「○秒後に処理を再開したい」と思ったことはありませんか?時間を指定して処理を行う場合のマクロを作成する場合は、Waitメソッドを使用してみましょう。


1.Waitメソッドについて

1-1.Waitメソッドとは

実行中のマクロを指定した時刻まで停止し、指定した時刻になると処理を再開します。指定する時間は、「hh:mm:ss形式」で行います。似たような機能で、Sleep関数があります。Sleep関数については、下記リンクを参照してください。

関連記事

1-2.Waitメソッドの構文

Waitメソッドの構文は下記の通りです。戻り値は、Boolean型(true:指定した時刻まで停止した、false:途中で強制終了した)です。

Application.Wait (再開する時刻)

1-3.Sleep関数との違い

Sleep関数とWaitメソッドとの違いは、下記の表にまとめています。

比較内容SleepWait
処理内容指定した秒だけ処理を中断
その後、処理を再開
指定した時間まで処理を中断
その後、処理を再開
設定する内容中断する時間再開する時間
設定する値の単位(形式)ミリ秒hh:mm:ss
指定する時間のフォーマットInteger型Date型
中断方法なしESCボタンを押下
使用時のデメリット処理の中断ができない過去の時間を指定すると、無限ループになり処理が終わらない

採用基準の一つとして、使用目的が「中断する時間」と「再開する時間」のどちらを目的とするかがあります。


2.Waitメソッドの使用例

2-1.基本的な使用例

2-1-1.再開時刻を指定する

「特定の時間まで処理を待機して、時間が来たら実行したい」場合は、下記のように指定します。

Sub sample01()

    Application.Wait TimeValue("17:00:00")	'17時に処理を再開

    MsgBox "17時になったので、処理を実行します。"	'処理例

End Sub

2-1-2.実行時から一定時間後を指定

停止する秒を指定して、時間が経過したら処理を再開したい場合は、下記のように指定します。

Sub sample02()

    Application.Wait (Now + TimeValue("0:00:05"))

    MsgBox "5秒経過したので、処理を再開します。"

End Sub

2-2.特殊な書き方をする場合

2-2-1.強制終了(中断中にESCボタン押下)したかをチェック

Waitの戻り値をチェックすることで、指定した時間を停止したかを確認することができます。

Sub sample03()

    If Application.Wait(Now + TimeValue("0:00:10")) = False Then
        MsgBox "強制停止しました。"
    Else
        MsgBox "10秒経過したので、処理を再開します。"
    End If

End Sub

2-2-2.ミリ秒を指定する場合

再開までの時間を、ミリ秒で指定することもできます。

Sub sample04()
    Dim ms As Long  'ミリ秒を格納
    ms = 10000    '停止させたい時間をミリ秒で指定

    Application.Wait (Now + ms / 86400000)

    MsgBox "10秒経過したので、処理を再開します。"

End Sub

3.注意点

下記のように、「Application.」をWaitの前に記述しないと、実行時にエラー

Sub sample05()
    
    Wait (Now + TimeValue("0:00:05"))	'「Application.」がWaitの前についていない

    MsgBox "5秒経過したので、処理を再開します。"

End Sub

エラー画像
エラー画像


4.最後に

WaitメソッドはSleep関数と処理は似ていますが設定する値の単位が異なるので、使用目的に応じて使い分けてください。

私たちは、全てのエンジニアに市場価値を高め自身の望む理想のキャリアを歩んでいただきたいと考えています。もし、今あなたが転職を検討しているのであればこちらの記事をご一読ください。理想のキャリアを実現するためのヒントが見つかるはずです。

コメント

公式アカウントLINE限定!ボールドの内定確率が分かる無料診断実施中
公式アカウントLINE限定!
ボールドの内定確率が分かる無料診断実施中