EXCEL VBAを実行中に処理を指定した時間だけ止めたい場合のいちばんシンプルな方法をご紹介する。
■コード
Private Declare PtrSafe Sub Sleep Lib “kernel32” (ByVal dwMilliseconds As LongPtr) Sub sleeptest() 処理① Call Sleep(1000) 処理② End sub
■解説
コードの書き方は上記の通り実にシンプル。下記の2ステップで完了する。
- Subの前に「Private~」の一文を記載する。
- 待機させたい場所に「Call Sleep(1000)」と記載する。
Sleep関数のカッコ内に記載するのは「ミリ秒」で、1000ミリ秒=1秒である。
0.5秒停止したいならSleep(500)、3秒ならSleep(3000)と記載する。
■注意
OSが32bitか64bitかで1行目の記載方法が異なり、間違えるとエラーが表示される。
上記のコードは64bitの場合で、32bitの場合は下記のコードを記載する。
Private Declare Sub Sleep Lib “kernel32” (ByVal dwMilliseconds As Long)
※OSが64bit、Excelが32bit版だった場合、どちらのコードでも動くっぽい(未確認)
■その他Waitメソッド
指定時間、処理を止める方法はSleep関数の他にWaitメソッドという物があるが、「指定秒数止めたい」のであれば上記のSleep関数だけ覚えておけば不便はない。
Waitメソッドについてはいずれ別の記事で紹介する。
指定時刻に処理を再開したい場合などはWaitメソッドの方が便利なので、必要に応じてSleep関数とWaitメソッドを使いわけよう。