VBA待機機能| Excel VBA待機メソッドの使用方法は?

ExcelVBA待機機能

VBA待機は、コードの実行を指定された時間一時停止するために使用される組み込み関数です。これは、sleepコマンドで行う操作と非常によく似ており、application.waitメソッドを使用してコードを一時停止します。

一部のコードは、他のタスクを完了する必要があるため、コードの次の行に進むまでにしばらく時間がかかります。このような場合、実行するコードを停止し、しばらく一時停止してから実行を続行する必要があります。実行するコードを一時停止するには、2つの方法があります。1つは「Sleep」メソッドで、もう1つは「Wait」メソッドです。以前の記事では、VBAコードを一時停止する「VBAスリープ」メソッドについて説明しました。

名前自体が示す「待機」は、指定された時間枠で実行されるマクロコードを保持します。このメソッドを使用して、コードを一時停止する時間を指定する必要があります。次に例を示します。

WAIT関数の構文は次のとおりです。

コードが一時停止する時間について言及する必要があります。最後にわかるように、ブール値と表示されています。これは、結果をブール値、つまりTRUEまたはFALSEとして返すことを意味します。

指定された時刻になるまではFALSEと表示され、指定された時刻になるとTRUEが返されます。

これは、SLEEPがWindows関数であるWAITが組み込み関数であるため、SLEEP関数とは異なります。SLEEP関数にアクセスする前に、モジュールの上部にある以下のコードに言及する必要があります。しかし、WAITはこれを必要としません。

コード:

#If VBA7 Then Public Declare PtrSafe Sub Sleep Lib "kernel32"(ByVal dwMilliseconds As LongPtr)'64ビットシステムの場合#Else Public Declare Sub Sleep Lib "kernel32"(ByVal dwMilliseconds As Long) 'For 32 Bit Systems End If 

ExcelVBA待機機能の使用例

このVBA待機Excelテンプレートはここからダウンロードできます–VBA待機Excelテンプレート

例1

正午の14:30:00にExcelで作業していて、時刻が14:40:00になるまでコードを一時停止したいとします。以下のコードを使用できます。

コード:

 Sub Wait_Example1()Application.Wait "14:40:00" End Sub 

このコードは、オペレーティングシステムの時刻が14:40:00に達するまで、Excelの動作を停止します。このような時間を提供することは、私たちが常に14:30:00から働くとは限らないため、危険です。それは常に変化し続けるからです。

2分間待ちたいコードを実行しているときはいつでも、コードでこれをどのように参照するとしますか?

そのため、VBANOW関数とTIMEVALUE関数を使用して、現在の時刻から指定した時刻を入力できます。

NOW()関数は、コンピュータシステムごとに現在の日付と時刻を返します。TIMEVALUE関数は、00:00:00から23:59:59、つまり午後11:59:59までの時刻を24時間形式で表します。文字列値を時間値に変換します。

たとえば、NOW()+ TIMEVALUE(00:02:30)は、現在の時刻+2分30秒を意味します。

現在の時刻が14:25:30の場合、14:28:00になります。

現在の時刻から次の10分間までコードの実行を停止または一時停止するには、以下のコードを使用できます。

コード:

 Sub Wait_Example2()Application.Wait(Now()+ TimeValue( "00:10:00"))End Sub 

正確に一時停止するには、NOW()関数を使用することが重要です。そうしないと、Excelワークブックが深夜まで一時停止する可能性があります。ただし、EscキーまたはBreakキーを押すと、いつでも一時停止方法を終了できます

例2

ループが実行されるたびに10秒待ちます

waitメソッドはループでよく使用されます。ループが実行されるたびに10秒待つ必要がある場合があります。たとえば、以下のデータを見てください。

Profit =(Sales – Cost)を計算するには、ループを作成し、ループごとに10秒間待って、結果が正確かどうかを確認します。以下のコードはそれを行います。

コード:

 Sub Wait_Example3() Dim k As Integer For k = 2 To 9 Cells(k, 4).Value = Cells(k, 2) - Cells(k, 3) Application.Wait (Now() + TimeValue("00:00:10")) Next k End Sub 

This code will calculate the profit column line by line. After the completion of the first line, it will wait for 10 seconds before it calculates the next line.

VBA Sleep vs VBA Wait

VBA SLEEPVBA WAIT
It is not a VBA built-in function, needs a special code to access this function.It is a VBA built-in function, doesn’t require any special code to access this function.
Sleep requires milliseconds as the time frame.Wait requires a regular time frame.
We can delay the code in millisecondsWe can delay only in whole seconds.