【VBA】sleepを使えるようにする

excelvbaエクセル

VBAにはsleepコマンドがありません。

なのでwindows APIを利用してVBA内でもsleepを使えるようにする必要があります。

モジュールの最上部(関数の上)に下記を追記してAPIの宣言をします。

#If VBA7 Then
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr)
#Else
'32bit版
Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)
#End If

上部は64bit用で、下は32bit(64bit以外)の指定になります。

sub sleep_test()

sleep 1000 'ミリ秒 1秒=1000

end sub

とすると1秒何もしないで終了する関数となります。

但し、処理を秒数で待つということは濫用しないほうがいいです。

秒数で待つときは何らかの処理を待つ場合などに使うと、PCの負荷状態などによって想定通りの動きにならない場合があるからです。

処理フローをきちんと決めて、処理が終わったことを確認して次の処理を行うなどの構成にするのが理想です。

コメント

タイトルとURLをコピーしました