ALL Program VBA

【VBA】Sleepを使用しVBA実行を任意の時間停止させる方法【簡単】

VBAでSleepを使用する方法を丁寧に説明
EXCEL VBA動作時任意の時間のあいだ処理を止めたいです!
 

こんな悩みに回答します。

 

こんな悩みの人向け

 

こんな悩みの人向け

  • VBA動作時任意の時間 処理を止めたい人
.

VBAの速度があまりにも早すぎて、処理が追い付かなく、VBA側がエラーになることがありますよね。

例えば、VBAで別EXCELを開いて何かを処理をする…といった場合、
別EXCELファイルを開いてる途中で 次のVBAコードが実行され、
VBAがエラーでデバックモードになるという。。。

そういったときに、解決する方法は 複数あるのですが、
おそらく一番簡単な解決方法が、本記事で紹介する「Sleep機能」を利用することです。

Sleep機能は、いろいろと使い勝手が良いので、このタイミングで知っておくと良いと思います!
Nakamura

 

 

ということで、説明いたします。

 

 

コードの紹介

VBA動作時に任意の時間止めるのは、すごく簡単にできます。

具体的には、「Sleep」というコードを使います。

コードは以下の通り。

 
Sleepコードは、英語の意味のまんまですので、簡単に感じますよね!
Nakamura
 

ここでの ワンポイント アドバイスですが、「Sleep 秒数の秒数についての考え方です。

秒数の考え方は以下の通りになりますので、併せて確認しておきましょう。

ポイント

1000 が 1秒 となることを覚えておくだけでOKです!

  • Sleep 1000   → 1秒 止める
  • Sleep 10000 → 10秒 止める
  • Sleep 60000 → 60秒 止める

ただし、1点だけ注意点がありまして、Sleep機能を利用するためには 1つだけ準備をしてあげる必要があります。

次で説明しますね。

簡単です。ご安心ください!
Nakamura
 

Sleep機能を使うための準備(★重要)

Sleepを使用するためには、以下のコードを Sub~EndSub手前に挿入してあげる必要があります。

 
Sleep機能は、PC本体のAPI機能を利用しているため コチラの準備が必要となります。
まぁ正直、この辺は 深く理解せず、このコードを挿入すればSleep使えるんだ!ラッキー!程度の理解で全然問題ありません。
Nakamura
 

具体的に、どのように挿入すれば良いのか分からない人 向けに、
以下にヒナ型のコードを紹介しておきますね。

Sub~EndSubの手前に挿入するというのは、こういう意味となります!
ぜひぜひSleepでVBA動作の安定性を向上させ、VBAライフを充実させてください!
Nakamura

 

 

終わりに

Sleepは、VBAにおいて 結構頻繁に利用するAPI機能の1つとなります。

使い方も簡単で、尚且つ 使い勝手も良く、僕は結構な頻度で利用したりします。

人によっては、より安定性を増させるために 違う手法を取る場合もありますが、
最初はSleepから初めて 問題ないと思います。
動作が遅くなっても、VBA実行が止まらない方が優先順位は高いと思いますので。
Nakamura

はい!ということで、今回はこの辺で終わりとなります。

今後も、VBAに関する有用なコードがありましたら、
紹介していく予定となりますので、今後も NakamuraBlogをどうぞよろしくお願いいたします。

今回はここまでとなります。

ありがとうございました。




  • この記事を書いた人

Nakamura(nkmr)

ブロガー│NakamuraBlog(ナカログ)運営 [月1.5万PV]│ 【経歴】IT会社に新卒入社 ▶︎ 通用しない ▶︎ プログラミングに出会う ▶︎ 年間1億円以上のコスト削減プログラムを開発 ▶︎ 会社賞受賞 ▶︎ 少しでも世の中の苦しんでる私と似た人に役に立てればと思いブログを開設。 ● 文系がプログラムと出会って会社員人生が変わった人。 ● 2020年より「嫁を置いて1人旅」の旅動画を投稿開始。

-ALL, Program, VBA
-, ,