SleepやWaitで処理を一定時間とめる
2021-08-04 00:00:00
処理の間に一定の間隔を開けたい場合に使える方法を紹介します。1秒単位で多少誤差があってもよければApplication.Waitメソッドが使用できます。1ミリ秒単位であればWindowsのAPIのSleep関数を使うのがいいと思います。A1セルに10から0までカウントダウンするサンプルを作成しました。(※ Application.Waitメソッドは秒の切り替わりで次の処理が実行されるので1秒以内の誤差が出ます。1秒で設定するとすぐに実行される場合があります。)
Application.Waitメソッド
Dim i As Long For i = 10 To 0 Step -1 Range("A1").Value = i Application.Wait Now + TimeValue("00:00:01") Next i
Sleep関数
Sleep関数を使用するにはモジュールのプロシージャ宣言より前に下の宣言が必要止まります。
Public Declare PtrSafe Sub Sleep Lib ""kernel32"" (ByVal ms As LongPtr)
使用する側のコードは下のようになります。
Dim i As Long For i = 10 To 0 Step -1 Range("A1").Value = i Sleep 1000 Next i