Excel・CSV VBA

【エクセルVBA】Sleep関数やWaitメソッドの使い方

投稿日:2021年7月22日 更新日:

 

あのー、ExcelのVBAで、処理を一時停止する方法は分かりますか??

はい、Sleep関数やWaitメソッドで可能ですよ。
本当ですか、教えてほしいです!!
サンプルコードをご紹介しましょう!


ExcelのVBAで、処理を一時停止する、
Sleep関数やWaitメソッドをご紹介します。

マクロ機能が有効なExcelブック「.xlsm」を作成

Excelブック「.xlsm」の作成方法が不明な場合は、下記の記事を参考にして下さい。
【エクセルVBA】マクロ機能が有効なExcelブック「.xlsm」の作り方

コードを標準モジュールに貼り付け

標準モジュールの開き方が不明な場合は、下記の記事を参考にして下さい。
【エクセルVBA】標準モジュールの開き方

標準モジュールを開いて、下記のコードを貼り付けて下さい。

コード

Sleep関数

Sleep関数はWindows APIです。
処理停止時間をミリ秒(1秒の1000分の1)単位で指定可能です。

Microsoft Officeが32ビットバージョンの場合は
モジュールの最初に、下記を記載して下さい。
※「mlsc」は変数なので、任意の文字列に変更して構いません。

32ビットバージョンのサンプルコードは下記です。

 

Microsoft Officeが64ビットバージョンの場合は
モジュールの最初に、下記を記載して下さい。
※「mlsc」は変数なので、任意の文字列に変更して構いません。
32ビットバージョンと比較すると、「PtrSafe」部分を追記しています。

64ビットバージョンのサンプルコードは下記です。

 

Waitメソッド

Waitメソッドは、引数で指定する時刻まで処理停止可能です。
Now関数で現在時刻を取得して、
TimeValue関数で値を加算した指定時刻まで処理を停止します。

現在時刻から1秒後まで処理停止する場合は、下記の様に記載します。
※「(“00:00:01”)」の数値を変更することで処理停止時刻を指定します。

サンプルコードは下記です。

 

Waitメソッド(ミリ秒単位で指定)

また、Sleep関数と同様に、処理停止時刻をミリ秒単位で指定する場合は、
下記の様に記載します。
※「1000」の数値を変更することで処理停止時刻を指定します。

※「86400000」は、1日をミリ秒に換算した値です。
1秒=1,000ミリ秒
1日=60秒×60分×24時間=86,400秒
86,400秒=86,400,000ミリ秒

サンプルコードは下記です。

マクロを実行

上記で作成したマクロファイル(ここでは「処理を一時停止するVBA.xlsm」とファイル名を設定。)を準備します。

マクロファイルを開いて、「コンテンツの有効化」をクリックします。
※設定により、「コンテンツの有効化」は表示されない(クリック不要の)場合もあります。

 

「開発」タブをクリックします。

 

「マクロ」をクリックします。

 

マクロ「Sample1~3」のいずれかを選択、「実行」をクリックします。

 

実行結果:Sleep関数

「1000ミリ秒停止しました」と表示されます。

 

実行結果:Waitメソッド

「0:00:01秒停止しました」と表示されます。

 

実行結果:Waitメソッド(ミリ秒単位で指定)

「1000ミリ秒停止しました」と表示されます。

 

完了です。

参考サイト

Microsoft
Office 2010 の 32 ビット バージョンと 64 ビット バージョンとの互換性
https://docs.microsoft.com/ja-jp/previous-versions/office/ee691831(v=office.14)?redirectedfrom=MSDN

スポンサーリンク

pr001




pr001




-Excel・CSV, VBA

スポンサーリンク

スポンサーリンク

PR005


ハント

VBA、GoogleAppsScript、思考法など、
業務効率化に繋がる情報を投稿中です。

普段は某IT企業に勤務しています。
Twitter @skillhunter007

好きなもの:アイアンマン、

ほしいもの:フライデー
(アイアンマンに登場するAI)、
盗賊の極意(スキルハンター)、