こんな悩みに回答します。
非表示にできる< 目次 >
こんな悩みの人向け
こんな悩みの人向け
- VBA動作時に任意の時間 処理を止めたい人
VBAの速度があまりにも早すぎて、処理が追い付かなく、VBA側がエラーになることがありますよね。
例えば、VBAで別EXCELを開いて何かを処理をする…といった場合、
別EXCELファイルを開いてる途中で 次のVBAコードが実行され、
VBAがエラーでデバックモードになるという。。。
そういったときに、解決する方法は 複数あるのですが、
おそらく一番簡単な解決方法が、本記事で紹介する「Sleep機能」を利用することです。
ということで、説明いたします。
コードの紹介
VBA動作時に任意の時間止めるのは、すごく簡単にできます。
具体的には、「Sleep」というコードを使います。
コードは以下の通り。
1 2 |
'VBA動作を1秒間止める Sleep 1000 '←1000 は 1秒の意味。 |
ここでの ワンポイント アドバイスですが、「Sleep 秒数」の秒数についての考え方です。
秒数の考え方は以下の通りになりますので、併せて確認しておきましょう。
ポイント
・1000 が 1秒 となることを覚えておくだけでOKです!
- Sleep 1000 → 1秒 止める
- Sleep 10000 → 10秒 止める
- Sleep 60000 → 60秒 止める
ただし、1点だけ注意点がありまして、Sleep機能を利用するためには 1つだけ準備をしてあげる必要があります。
次で説明しますね。
Sleep機能を使うための準備(★重要)
Sleepを使用するためには、以下のコードを Sub~EndSubの手前に挿入してあげる必要があります。
1 2 |
'Sleep機能を使うAPI Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) |
まぁ正直、この辺は 深く理解せず、このコードを挿入すればSleep使えるんだ!ラッキー!程度の理解で全然問題ありません。
具体的に、どのように挿入すれば良いのか分からない人 向けに、
以下にヒナ型のコードを紹介しておきますね。
1 2 3 4 5 6 7 8 |
'Sleep機能を使う API Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub VBA名称() '~(VBAコード入力)~ Sleep 1000 '1秒止める '~(VBAコード入力)~ End Sub |
ぜひぜひSleepでVBA動作の安定性を向上させ、VBAライフを充実させてください!
終わりに
Sleepは、VBAにおいて 結構頻繁に利用するAPI機能の1つとなります。
使い方も簡単で、尚且つ 使い勝手も良く、僕は結構な頻度で利用したりします。
最初はSleepから初めて 問題ないと思います。
動作が遅くなっても、VBA実行が止まらない方が優先順位は高いと思いますので。
はい!ということで、今回はこの辺で終わりとなります。
今後も、VBAに関する有用なコードがありましたら、
紹介していく予定となりますので、今後も NakamuraBlogをどうぞよろしくお願いいたします。
今回はここまでとなります。
ありがとうございました。