VBA を使用したコード実行中の遅延の追加
Glen Alfaro
2023年1月30日
VBA を使用して複雑な計算やプロセスを処理する場合、プログラマーは、一部のアルゴリズムが重すぎて処理に時間がかかることに注意する必要があります。この問題は、現在のプロセスがまだ実行されているときに発生しますが、VBA コンパイラは次のプロセスに進みます。その場合、オーバーフローやエラーが発生します。
遅延の典型的な用途は、Web スクレイピングツールを扱う場合です。データをスクレイピングする前に、まず Web サイトを完全にロードする必要があります。そうしないと、エラーが発生します。これの別のアプリケーションは、定義された時間枠で定期的にマクロを実行する必要がある場合です。
この記事では、wait
コマンドを使用して遅延時間を追加する方法を示します。
構文:
Application.Wait(Now + [delay time])
ここで:
[delay time] |
必要な遅延時間を指定します。 |
wait
コマンドを使用して VBA に遅延時間を追加する例
Sub DelayMe()
'Print the current time
Debug.Print Now
'Delay for 10 seconds start here
Application.Wait(Now + TimeValue("00:00:10"))
'Print the current time
Debug.Print Now
End Sub
出力:
12/21/2021 4:41:25 PM
12/21/2021 4:41:35 PM
wait
コマンドを使用して自動更新スキームを実装する
以下のコードブロックは、wait
コマンドを使用した自動更新スキームの実装を示しています。10 秒ごとに GetTimeNow
サブルーチンを呼び出します。
Sub AutoUpdate()
'Main loop where the code execution takes place
Do
'Add a delay for every call
Application.Wait(Now + TimeValue("00:00:10"))
'Calls the GetTimeNow subroutine
Call GetTimeNow
Loop
End Sub
Sub GetTimeNow
'Print the time at the time of the call.
Debug.Print "The current time is: " & Now
End Sub
出力:
The current time is: 12/21/2021 4:59:30 PM
The current time is: 12/21/2021 4:59:48 PM
The current time is: 12/21/2021 5:00:01 PM
The current time is: 12/21/2021 5:00:16 PM