教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA その他操作】処理を一時停止(Application.Wait)するにはどうすればいいの?教えて!

f:id:m_kbou:20210816143330p:plain

処理を一時停止させる方法について紹介します。

 

 

構文

記述方法は以下の通りとなります。

Application.Wait  ”[処理を再開する時刻]”

[説明]:

処理を一時停止させるには
 「Application.Wait  ”[処理を再開する時刻]”」
と記述します。
[処理を再開する時刻]には停止した処理を再開させる時刻を記述し、「”」(ダブルクォーテーション)で囲みます。内容を纏めると、「[処理を再開する時刻]になるまで処理を一時停止させて下さい。」との意味になります。

[記述例]: 

Application.Wait "14:15:00"
Application.Wait Now + TimeValue("0:00:30")

 

使い方

使い方について具体的に説明します。

処理再開時刻を固定値で指定する方法

処理再開時刻を固定値で指定する方法について説明します。

[プログラミング例]:

Sub サンプル()

  '↓処理①
  Range("B1") = Format(Now, "hh:mm:ss")

  '↓処理②
  Application.Wait "14:15:00"

  '↓処理③
  Range("B2") = Format(Now, "hh:mm:ss")

End Sub

内容は、

[処理①]:B1セルに現在の時刻をセットします。
[処理②]:14時15分00秒になるまで処理を停止します。
[処理③]:[処理②]停止後の時刻をB2セルにセットします。

との意味になります。

f:id:m_kbou:20210816143344p:plain

※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210816143357p:plain

②B1セルに停止開始時間がセットされます。(※今回は<実行>ボタンのクリック時刻が14時12分25秒であったため、B1セルには「14:12:25」がセットされました。)

f:id:m_kbou:20210816143413p:plain

③数分の処理停止があった後、指定した14時15分00秒に処理が再開されました。処理が再開されると同時にB2セルには時間がセットされました。(※今回は14時15分00秒に処理の停止解除を指定をしたため、B2セルには「14:15:00」がセットされました。)

f:id:m_kbou:20210816143424p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

処理再開時刻を固定値で指定する方法についての説明は以上です。

 

処理再開時刻を変数で指定する方法

処理再開時刻を変数で指定する方法について説明します。

[プログラミング例]:

Sub サンプル()

  '↓処理①
  Range("B1") = Format(Now, "hh:mm:ss")

  '↓処理②
  Application.Wait Now + TimeValue("0:00:30")

  '↓処理③
  Range("B2") = Format(Now, "hh:mm:ss")

End Sub

内容は、

[処理①]:B1セルに現在の時刻をセットします。
[処理②]:現在の刻から30秒後まで処理を停止します。
[処理③]:[処理②]停止後の時刻をB2セルにセットします。

との意味になります。

f:id:m_kbou:20210816143559p:plain

※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210816143612p:plain

②B1セルに停止開始時間がセットされます。(※今回は<実行>ボタンのクリック時刻が14時24分31秒であったため、B1セルには「14:24:31」がセットされました。)

f:id:m_kbou:20210816143628p:plain

③数分の処理停止あった後、指定した「停止時間+30秒後」に処理が再開されました。処理が再開されると同時にB2セルに時間がセットされました。(※今回は14時24分31秒に処理を停止したため、その30秒後である「14:25:01」がB2セルにセットされました。)

f:id:m_kbou:20210816143638p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

処理再開時刻を変数で指定する方法についての説明は以上です。

 

おわりに

今回は処理を一時停止させる方法について説明しました。類似の内容にSleep関数(WindowsAPI)もあります。こちらも参考にして下さい。