VBAでランダム時間だけ処理を止めるにはWindows APIのSleep関数と
VBAのRnd関数とInt関数を使用します。
Rnd関数
Int関数
ランダム時間だけ処理を止めるコードは以下になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Option Explicit Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long) Sub RandomSleep(minSecond As Long, maxSecond As Long) '################################################################################### '最低minSecondから最大maxSecondの間までランダムにSleepする '----------------------------------------------------------------------------------- '引数 :minSecond 最低Sleepさせる時間 ' maxSecond 最大Sleepさせる時間 '################################################################################### Dim sleepTime As Long sleepTime = (minSecond * 1000) + Int((maxSecond * 1000) * Rnd) sleepTime = sleepTime - (sleepTime Mod 1000) Sleep sleepTime End Sub Sub test_RandomSleep() Call RandomSleep(1, 5) End Sub |
RandomSleep がランダム秒数分だけ、処理を止めるSub プロシージャになります。
最低スリープ秒数を引数minSecond
最大スリープ秒数を引数maxSecondに設定すると
その範囲内からランダムに秒数を算出して、処理を停止します。
test_RandomSleepを実行するとRandomSleepを呼び出します。
上記のコードはCall RandomSleep(1, 5)と指定しているので
1~5秒の間で処理を停止します。
Rnd関数は、0以上1未満の値を返します。
Int関数は小数点を切り捨てを行い、整数値を返します。
sleepTime – (sleepTime Mod 1000)で
1000ミリ秒未満の値を切り捨てています。
コメント