ExcelVBAでSleepとWaitとDoEventsで待ち時間として良いのはどれか?

こんにちは、タケイチです。

VBAには、処理を止める。待つ。という動作があります。

この動作には、2つの待ちがあります。

①決めた時間数待つ
②希望の返り値が返ってくるまで待つ

今回は、①の決めた時間数分待つ方法について検討していきます。

処理を一度止めたり、何秒間待つ。という動きには、Sleep関数を使ったり、Waitメソッドを使うのは実際どちらが良いのか?

僕は、使いやすいという理由だけで、自作のDoEventsを使った〇秒待つ!というコードを作っていました。

結論から言うと、Sleep関数が僕的には一番良い!という結論に至りましたが、64ビットと32ビットでの宣言方法の違いがあり、汎用性に欠けていましたので、どちらにでも対応した宣言方法も備忘録として残します。

では、いってみましょう。

結論はSleep関数を使って待つのが最善の方法だ!

Sleep関数、Waitメソッド、DoEventsメソッドの中では、Sleep関数が一番最良でした。

個人的には、Sleep関数は最初の宣言が面倒で避けていて、自作のDoEventsで乗り切っていたんですが、自作のDoEventsはPCに一番負担のかかる方法でした。

Sleep関数のコード

今回のコード

今回のコードで一番重要視しているのは、最近のOSの64Bit主流の流れと昔ながらの32Bit使用者の互換性です。

Sleep関数を使わない理由としては、僕の職場はいろいろなVerが使われているので、どのExcelでもできるようにというのと、どのハードウェアでも対応できるようにと考えました。

何でSleep関数が最強なのか?

Sleep関数の実験をしたので、ぜひ参考にしていただきたいですが、CPUの使用率の上がり方が全然違います。

Sleep   :平均4%
Wait   :平均26%
DoEvents:平均28%

今回の実験コード紹介

実験に使ったコードを紹介します。

今回のコード