Word VBA(Visual Basic for Applications)を使っていると、マクロの実行中に「少し待ってから次の処理を行いたい」と思うことがあります。たとえば、ある操作を行った後、1秒間の待機を挟んでから次の処理を実行したい場合です。今回は、Word VBAで1秒間の待機を実現する方法を、初心者の方にもわかりやすく解説します。
Word VBAで1秒間の待機を実現する方法
Word VBAでは、標準で「Application.Wait」メソッドが用意されていますが、これはExcel専用の機能であり、Wordでは使用できません。そのため、Word VBAで待機を実現するには、別の方法を使う必要があります。
Timer関数を使った方法
Timer関数を使って、現在の時刻から指定した秒数だけ待機する方法です。以下のコードをWord VBAのモジュールに追加してください。
vba
Sub WaitForOneSecond()
Dim StartTime As Single
StartTime = Timer
Do While Timer < StartTime + 1
DoEvents
Loop
End Sub
このコードでは、Timer関数で現在の時刻を取得し、その時刻から1秒後までループを回し続けます。ループ内で「DoEvents」を使うことで、他の処理がブロックされないようにしています。
Windows APIのSleep関数を使った方法
WindowsのAPI関数「Sleep」を使って、指定したミリ秒だけ待機する方法です。まず、モジュールの先頭に以下の宣言を追加します。
vba
#If VBThen
Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
#Else
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If
次に、以下のようにSleep関数を呼び出します。
vba
Sub SleepForOneSecond()
Sleep 1000 ' 1000ミリ秒 = 1秒
End Sub
この方法では、指定した時間だけ処理を停止しますが、注意点として、Sleep関数を使用すると、Wordの操作が一時的にできなくなるため、ユーザーインターフェースがフリーズしているように見えることがあります。
Application.OnTimeを使った方法
指定した時刻に別のマクロを実行する「Application.OnTime」メソッドを使う方法です。以下のように設定します。
vba
Sub ScheduleMacro()
Application.OnTime Now + TimeValue("00:00:01"), "YourMacroName"
End Sub
このコードでは、現在の時刻から1秒後に「YourMacroName」というマクロを実行するようにスケジュールします。この方法では、待機中もWordの操作が可能です。
よくある質問や疑問
Q1: Timer関数とSleep関数、どちらを使うべきですか?
一般的には、Timer関数を使った方法が推奨されます。Sleep関数はWordの操作を一時的に停止させるため、ユーザーインターフェースがフリーズしているように見えることがあります。Timer関数を使うことで、待機中もWordの操作が可能です。
Q2: Application.OnTimeを使うと、どのような利点がありますか?
Application.OnTimeを使うことで、指定した時刻に別のマクロを実行することができます。これにより、待機中も他の処理を並行して行うことが可能になります。
Q3: 1秒未満の待機はどうすれば実現できますか?
1秒未満の待機を実現するには、Timer関数を使った方法が適しています。Timer関数は小数点以下の秒数も扱えるため、例えば「0.5秒」の待機も可能です。
今すぐ解決したい!どうしたらいい?
いま、あなたを悩ませているITの問題を解決します!
「エラーメッセージ、フリーズ、接続不良...もうイライラしない!」
あなたはこんな経験はありませんか?
✅ ExcelやWordの使い方がわからない💦
✅ 仕事の締め切り直前にパソコンがフリーズ💦
✅ 家族との大切な写真が突然見られなくなった💦
✅ オンライン会議に参加できずに焦った💦
✅ スマホの重くて重要な連絡ができなかった💦
平均的な人は、こうしたパソコンやスマホ関連の問題で年間73時間(約9日分の働く時間!)を無駄にしています。あなたの大切な時間が今この悩んでいる瞬間も失われています。
LINEでメッセージを送れば即時解決!
すでに多くの方が私の公式LINEからお悩みを解決しています。
最新のAIを使った自動応答機能を活用していますので、24時間いつでも即返信いたします。
誰でも無料で使えますので、安心して使えます。
問題は先のばしにするほど深刻化します。
小さなエラーがデータ消失や重大なシステム障害につながることも。解決できずに大切な機会を逃すリスクは、あなたが思う以上に高いのです。
あなたが今困っていて、すぐにでも解決したいのであれば下のボタンをクリックして、LINEからあなたのお困りごとを送って下さい。
ぜひ、あなたの悩みを私に解決させてください。
まとめ
Word VBAで1秒間の待機を実現する方法として、Timer関数、Sleep関数、Application.OnTimeメソッドの3つを紹介しました。それぞれの方法には特徴がありますので、目的や状況に応じて使い分けてください。
他にも疑問やお悩み事があれば、お気軽にLINEからお声掛けください。





コメント