Vba で wait コマンドと sleep コマンドを使用するにはどうすればよいですか?
VBAの待機コマンド
VBA では、WAIT コマンド (メソッド) を使用すると、Excel で実行しているすべてのアクティビティを特定の時間、または特定の時間まで待機することができます。簡単に言えば、VBA を数秒、数分、さらには数時間、または一定の時間まで待機させることができます。引数を指定する必要があります。
VBAの使用手順 待機
- まず、キーワード「Application」を使用し、ピリオド (.) を入力して、プロパティとメソッドのリストを取得します。
- その後、「待機」方法を選択またはタップします。
- 次に、「Time」引数を指定して、VBA に待機時間を指示します。
- 最後に、コードを実行して Excel 内のすべてのアクティビティをキューに入れます。
このコードでは、 NOWとTIMEVALUE ( VBA Functions ) を使用して、コードの実行時から 10 秒待つように VBA に指示しました。したがって、10 秒が経過すると、IF ステートメントが条件をテストして実行され、「Wait Over」というメッセージが表示されたメッセージ ボックスが表示されます。
Sub vba_wait_example() If Application.Wait(Now + TimeValue("00:00:10")) = True Then MsgBox "Wait Over" End If End Sub
Wait メソッドを使用して、特定の時刻まで Excel がすべてのアクティビティを待機するようにすることもできます。次のコードは午後 1 時まで待機します。つまり、私のシステムでは現在 12 時 52 分なので、この行コードは次の 8 分間待機させます。
Application.Wait "13:00:00"
注: wait メソッドでは、少なくとも 1 秒しか待つことができません。
VBAスリープ
スリープは、マクロの実行時に一時停止したり、遅延を追加したりするのに役立つ Windows 関数 ( Windows DLL ファイルの下にあります。コード ステートメントを使用してこの関数をインポートする必要があります)。この機能では時間をミリ秒単位で指定できますが、すべてを一時停止したスリープ機能を停止することはできません。
VBAでスリープ機能を使う
- まず、コードステートメントを使用して、「 kernel32 ライブラリ」からスリープ関数をインポートする必要があります。
- 64 ビット Excel を使用している場合は、必ず「PtrSafe」ステートメントを追加する必要があります。
- 次に、コードで sleep 関数を呼び出す必要があります。
- 最後に、コードを遅延させる時間 (ミリ秒) を指定します。
If VBA7 Then ' For 64-Bit versions of Excel
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
Else 'For 32-Bit versions of Excel Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) End If Sub vba_sleep() Sleep (10000) 'add code here MsgBox "Finished" End Sub
上記のコードでは 10,000 ミリ秒があり、これは 10 秒に相当します。このコードを実行すると、コードが 10 秒遅れてからメッセージ ボックスが表示されます。
注:スリープ機能を使用すると、設定した時間だけ Excel のすべての作業が停止し、中断することもできません。 32 ビット バージョンと 64 ビット バージョンの互換性に関する Microsoft のこのリンクを必ず確認してください。
関連するチュートリアル
- VBAを使用して重複した値を強調表示する
- ハイパーリンク アドレス (URL) を抽出する VBA
- VBAの入力ボックス
- VBA でテキスト ファイルを作成して書き込む
- VBA画面更新