VBAで指定時間だけ処理を止める

VBA
この記事は約2分で読めます。

VBAで指定時間だけ処理を止めるにはWindows APIのSleepを使います。

Windows APIのSleepを使用する

指定時間だけ処理を止めるSleepは、外部プログラムの応答を待つときなどに使用します。

モジュールの最初でDeclareステートメントを使用します。
こちらの宣言を行うことによって、Windows APIのSleep関数を使えるようになります。

Sleepのあとに処理を止めたい時間を指定します。時間はミリ秒で指定します。
1秒の場合はSleep 1000、2秒の場合はSleep 2000です。

ミリ秒単位でSleepさせるのが直感的でなければ、関数を作成して秒単位でスリープさせましょう。

 

Sleepでランダムな時間停止する

Windows APIのSleep関数とVBAのRnd関数とInt関数を使用してランダムな時間だけ処理を止めてみます。
Rnd関数
Int関数

ランダム時間だけ処理を止めるコードは以下になります。

RandomSleep がランダム秒数分だけ、処理を止めるSub プロシージャになります。
最低スリープ秒数を引数min_second、最大スリープ秒数を引数max_secondに設定すると
その範囲内からランダムに秒数を算出して、処理を停止します。

TestRandomSleepを実行するとRandomSleepを呼び出します。
上記のコードはCall RandomSleep(1, 5)と指定しているので、1~5秒の間で処理を停止します。

Rnd関数は、0以上1未満の値を返します。Int関数は小数点を切り捨てを行い、整数値を返します。

sleepTime – (sleepTime Mod 1000)で1000ミリ秒未満の値を切り捨てています。

 

コメント