WordでVBAマクロを使って処理を一時停止させたいとき、特に「1秒間だけ待機したい」と思ったことはありませんか?でも、VBAの標準機能では1秒未満の待機が難しいと感じることも。そんなときに便利なのが、「Sleep関数」と「Waitメソッド」です。今回は、これらを使って1秒間の待機を実現する方法を、初心者の方にもわかりやすく解説します。
Sleep関数を使った1秒待機
Sleep関数とは?
Sleep関数は、指定した時間だけ処理を停止させるWindowsの機能です。VBAでは、この関数を使うことで、ミリ秒単位での待機が可能になります。
使い方のポイント
- 宣言が必要Sleep関数を使用するには、まずモジュールの先頭で宣言を行います。
- 引数はミリ秒待機時間をミリ秒単位で指定します。例えば、1秒待機する場合は1000ミリ秒です。
サンプルコード
vba
Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub WaitOneSecond()
MsgBox "処理を開始します。"
Sleep 1000 ' 1秒待機
MsgBox "1秒経過しました。"
End Sub
このコードを実行すると、最初のメッセージボックスが表示された後、1秒間の待機を経て、次のメッセージボックスが表示されます。
注意点
Sleep関数を使用すると、その間Word(アプリケーションが停止する)が応答しなくなるため、ユーザーの操作ができなくなります。
処理中にEscキーを押しても、処理を中断することができない点も注意してください。
Waitメソッドを使った1秒待機
Waitメソッドとは?
Waitメソッドは、指定した時刻まで処理を停止させるVBAの機能です。しかし、1秒未満の待機には向いていません。
使い方のポイント
待機を終了する時刻を指定します。つまり引数は時刻です。
例えば、現在時刻から1秒後に処理を再開する場合は、`Now + TimeValue(“00:00:01”)`と指定します。
サンプルコード
vba
Sub WaitOneSecond()
MsgBox "処理を開始します。"
Application.Wait (Now + TimeValue("00:00:01")) ' 1秒待機
MsgBox "1秒経過しました。"
End Sub
このコードを実行すると、最初のメッセージボックスが表示された後、1秒間の待機を経て、次のメッセージボックスが表示されます。
注意点
1秒未満の待機は不安定なので注意してください。
Waitメソッドは1秒未満の待機には不安定で、正確な時間待機が難しい場合があります。
まとめどちらを使うべきか?
| 方法 | メリット | デメリット |
|---|---|---|
| Sleep関数 | ミリ秒単位で正確な待機が可能 | アプリケーションが停止する |
| Waitメソッド | 使用が簡単で、1秒以上の待機に適している | 1秒未満の待機には不安定な場合がある |
結論として、1秒未満の正確な待機が必要な場合はSleep関数を、1秒以上の待機が必要な場合はWaitメソッドを使用するのがおすすめです。
よくある質問や疑問
Q1: Sleep関数を使うとWordが応答しなくなりますか?
はい、Sleep関数を使用すると、その間Wordが応答しなくなります。ユーザーの操作ができなくなるため、注意が必要です。
Q2: Waitメソッドで1秒未満の待機はできますか?
Waitメソッドは1秒未満の待機には不安定で、正確な時間待機が難しい場合があります。1秒未満の待機が必要な場合は、Sleep関数を使用することをおすすめします。
Q3: どちらの方法を使うべきですか?
1秒未満の正確な待機が必要な場合はSleep関数を、1秒以上の待機が必要な場合はWaitメソッドを使用するのがおすすめです。
まとめ
今回は、Word VBAで1秒間待機する方法として、Sleep関数とWaitメソッドを紹介しました。どちらの方法も、それぞれにメリットとデメリットがあります。自分の目的に合わせて、適切な方法を選んでください。
他にも疑問やお悩み事があれば、お気軽にLINEからお声掛けください。



コメント