
VBAのSleep関数とは?関数の解説と使用例
VBAでマクロを作成しているときに、「途中で少し処理を止めたい」と思ったことはありませんか?○秒毎に処理を行う等のマクロを作成する場合は、Sleep関数を使用してみましょう。
目次
1.Sleep関数について
1-1.Sleep関数とは
Sleep関数とはWindowsAPIの機能で、指定した時間が経過するまで実行を中断して、経過後に実行を再開します。指定する時間は、「ミリ秒」で行います。例)10秒中断する場合は、「10000」を指定します。
似たような機能で、Waitメソッドがあります。Waitメソッドについては、下記リンクを参照してください。
関連記事1-2.Waitメソッドとの違い
Sleep関数とWaitメソッドとの違いは、下記の表にまとめています。
比較内容 | Sleep | Wait |
処理内容 | 指定した秒だけ処理を中断 その後、処理を再開 | 指定した時間まで処理を中断 その後、処理を再開 |
設定する内容 | 中断する時間 | 再開する時間 |
設定する値の単位(形式) | ミリ秒 | hh:mm:ss |
指定する時間のフォーマット | Integer型 | Date型 |
中断方法 | なし | ESCボタンを押下 |
使用時のデメリット | 処理の中断ができない | 過去の時間を指定すると、無限ループになり処理が終わらない |
採用基準の一つとして、使用目的が「中断する時間」と「再開する時間」のどちらを目的とするかがあります。
1-3.Sleep関数の構文
Sleep関数の構文は下記の通りです。
Sleep [中断する時間(ミリ秒)]
2.Sleep関数の使用例
2-1.基本的な使用例
基本的な使い方は下記のように行います。
Sub sample01() Sleep 5000 MsgBox "Sleep終了" '処理例 End Sub
2-2.コンパイルエラーが出た場合
2-1のソースだけでは、下記のようなエラーが表示されます。
その場合、下記の一文をソースの先頭に追加する必要があります。
Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)
また、OSが64ビットの場合は、上記を追加しても別のエラーが表示されます。
その場合は、赤文字の箇所を追加する必要があります。
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As Long)
3.最後に
Sleep関数とWaitメソッドは、処理は似ていますが使用目的に応じて使い分けてください。
コメント