VBA で 処理を待ちたかったので APIのSleepを使ってみた
VBA Sleepで検索すると
Excel VBA を学ぶなら moug モーグ | 即効テクニック | 指定時間だけ処理を中断する
や
Office TANAKA - Excel VBA Tips[CPUの使用率を抑える方法]
が見つかるので、上記サイトを参考にして、
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)を頭に定義して
値 1が1/1000秒(千分の一秒)なので、
Sleep 1000 で 1秒みたいに待つ値を指定。
※100で0.1秒、500で0.5秒など、指定する
そんな感じで、簡単に使えるみたいです。
標準モジュールに貼り付けてテストしてみた
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub test20160729_sleep() Debug.Print Now() Sleep 3000 '3秒待ちたかったので、3000指定 Debug.Print Now() End Sub
何かの参考となれば・・・・
下記、テスト結果の動画です
【VBA】処理を待ちたかったので APIのSleepを使ってみた 【三流君】 - YouTube
www.youtube.com
蛇足1
隣のモジュール2で使うときは、再度頭に定義するかチェックする
モジュールを追加して、
Sub test20160729_sleep2() Debug.Print "TEST2" & Now() Sleep 2000 '2秒待ちたかったので、2000指定 Debug.Print "TEST2" & Now() Sleep 2000 '2秒待ちたかったので、2000指定 Debug.Print "TEST2" & Now() End Sub
テストしてみた。
※頭に二つ同じコードを定義してしまったら
コピペでよくあるのですが、定義を二つ書いてしまったら・・・
エラーにはならないみたいです。