VBA一時停止| スリープおよび待機機能を使用してVBAコードを一時停止します

VBAコードの実行を一時停止します

VBA一時停止は、コードの実行を指定された時間一時停止し、application.waitメソッドを使用してVBAでコードを一時停止するために使用されます。

何かを実行した後に大規模なVBAプロジェクトをビルドする場合、他のタスクを実行するためにしばらく待つ必要がある場合があります。このようなシナリオでは、タスクを実行するためにマクロコードをどのように一時停止しますか?「待機」と「スリープ」の2つの関数を使用して、VBAコードを指定した期間一時停止できます。

Waitメソッドを使用してコードを一時停止する方法は?

「待機」は、マクロを特定の時間実行し続けるためにVBAで使用する関数です。この関数を適用することにより、コードが何時まで待機するかについて言及する必要があります。

このVBA一時停止Excelテンプレートはここからダウンロードできます–VBA一時停止Excelテンプレート

たとえば、13:00:00にコードを実行している場合、時間を「13:15:00」と指定すると、マクロの実行が15分間保持されます。

ここで、VBAのWAIT関数の引数を見てください。

時間の議論では、コードを一時停止または待機するタイミングについて言及する必要があります。

たとえば、以下のVBAコードを見てください。

コード:

 Sub Pause_Example1()Range( "A1")。Value = "Hello" Range( "A2")。Value = "Welcome" Application.Wait( "13:15:00")Range( "A3")。Value = " VBAへ "End Sub 

このコードを実行している間、私のシステム時刻は13:00:00であることに注意してください。コードを実行するとすぐに、最初の2行が実行されます。

Range( "A1")。Value = "Hello"&Range( "A2")。Value = "Welcome"

しかし、次の行を見ると、Application.Wait(“ 13:15:00”)と表示されているため、これらの行のタスクを実行した後、マクロは15分間一時停止されます。つまり、13:00:00からシステムが待機します。時間は13:15:01に達します。

システム時刻がその時刻に達すると、残りのコード行が実行されます。

Range( "A3")。Value = "To VBA"

ただし、これは一時停止コードを実行するための最良の方法ではありません。たとえば、コードを異なる時間に実行している場合は、NOWVBA関数とTIMEVALUE関数を使用する必要があります。

Now関数は、作業中のシステムに従って現在の日付と時刻を返します。

TIME値関数は00:00:00から23:59:29までの時間を保持します。

さて、コードを実行するたびにコードを10分間一時停止する必要があると仮定すると、以下のコードを使用できます。

コード:

 Sub Pause_Example1()Range( "A1")。Value = "Hello" Range( "A2")。Value = "Welcome" Application.Wait(Now()+ TimeValue( "00:00:10"))Range( " A3 ")。Value=" To VBA "End Sub 

これは前のコードと似ていますが、唯一の違いはNOW&TIMEVALUE関数を追加したことです。

このコードを実行するたびに、実行が10分間保持または一時停止されます。

スリープ方法を使用してVBAコードを一時停止する方法は?

スリープは組み込み関数ではないため、VBAでは複雑な関数です。使用できるようにするための組み込みではないため、モジュールの先頭に以下のコードを追加する必要があります。

コード:

#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)#End If 'For 32 Bit Systems 

上記のコードをコピーして、モジュールの上部に貼り付けるだけです。

SLEEPはWindowsDLLファイルで提供されるVBA関数であるため、上記のコードを追加する必要がある理由。サブプロシージャを開始する前に、命名法を宣言する必要があります。

では、SLEEP関数の例を見てみましょう。

コード:

 Sub Pause_Example2()Dim StartTime As String Dim EndTime As String StartTime = Time MsgBox StartTime Sleep(10000)EndTime = Time MsgBox EndTime End Sub 

まず、2つの変数をStringとして宣言しました。

 Dim StartTime As String Dim EndTime As String 

Then we have assigned the TIME excel function to the StartTime variable. TIME function returns the current time as per system.

StartTime = Time

Then we have assigned the same to show in the message box.

MsgBox StartTime

Then I have applied SLEEP function as Sleep (10000).

Here 10000 is milliseconds which is equal to 10 seconds in VBA.

Then, at last, I have assigned the one more TIME function to the variable EndTime.

Now again I have written a code to show the time.

EndTime = Time

This will show the difference between start time and end time.

Now I will execute the code and see what the start time is.

When I execute the code my system time is 13:40:48 and now my code will sleep for 10 seconds. At the end, my time is as follows.

So, like this, we can pause the code from executing it for a specified amount of time.