VBA を使用したコード実行中の遅延の追加

Glen Alfaro 2023年1月30日
  1. wait コマンドを使用して VBA に遅延時間を追加する例
  2. wait コマンドを使用して自動更新スキームを実装する
VBA を使用したコード実行中の遅延の追加

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