コンテンツへスキップ

Yamada's blog

メインメニュー
  • 汎用エクセルVBAツール
  • 動画マニュアル
  • ホーム
  • Excel・CSV
  • 【エクセルVBA】Sleep関数やWaitメソッドの使い方
  • Excel・CSV
  • VBA

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

KINGKING007 2021年7月22日 1 分読み取り

 

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

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


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

目次

  • マクロ機能が有効なExcelブック「.xlsm」を作成
  • コードを標準モジュールに貼り付け
  • コード
    • Sleep関数
    • Waitメソッド
    • Waitメソッド(ミリ秒単位で指定)
  • マクロを実行
    • 実行結果:Sleep関数
    • 実行結果:Waitメソッド
    • 実行結果:Waitメソッド(ミリ秒単位で指定)
  • 参考サイト

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

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

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

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

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

コード

Sleep関数

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

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

Default
1
Private Declare Sub Sleep Lib "kernel32" (ByVal mlsc As Long)

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

Default
1
2
3
4
5
6
7
8
9
10
Private Declare Sub Sleep Lib "kernel32" (ByVal mlsc As Long)
 
Sub Sample1()
Dim time As Long
time = 1000
Sleep time
MsgBox time & "ミリ秒停止しました"
End Sub

 

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

Default
1
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal mlsc As Long)

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

Default
1
2
3
4
5
6
7
8
9
10
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal mlsc As Long)
 
Sub Sample1()
Dim time As Long
time = 1000
Sleep time
MsgBox time & "ミリ秒停止しました"
End Sub

 

Waitメソッド

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

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

Default
1
Application.Wait Now() + TimeValue("00:00:01")

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

Default
1
2
3
4
5
6
7
8
Sub Sample2()
Dim time
time = TimeValue("00:00:01")
Application.Wait Now() + time
MsgBox time & "秒停止しました"
End Sub

 

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

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

Default
1
Application.Wait [Now()] + 1000 / 86400000

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

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

Default
1
2
3
4
5
6
7
8
Sub Sample3()
Dim time As Long
time = 1000
Application.Wait [Now()] + time / 86400000
MsgBox time & "ミリ秒停止しました"
End Sub

マクロを実行

上記で作成したマクロファイル(ここでは「処理を一時停止する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

投稿ナビゲーション

前: 【エクセルVBA】アクティブなセルの位置を取得するVBA
次へ: 【PDF】CubePDFでPDFを画像ファイルへ変換する方法

関連記事

2046_000
  • Excel・CSV
  • VBA

【エクセルVBA】指定列で指定文字列を含む、セル個数を集計するVBA

KINGKING007 2025年2月22日 0
2016_000
  • Excel・CSV
  • VBA

【エクセルVBA】特定の文字列を含むセルへ、一括で色を付けるVBA

KINGKING007 2025年2月22日 0
1978_000
  • Excel・CSV
  • VBA

【エクセルVBA】選択範囲の数式を一括で絶対参照にするVBA

KINGKING007 2022年10月10日 0

検索

最近の投稿

  • 【WordPress】スマホで表を横スクロールさせる方法|Gutenberg対応CSSを解説
  • 【エクセルVBA】指定列で指定文字列を含む、セル個数を集計するVBA
  • 【エクセルVBA】特定の文字列を含むセルへ、一括で色を付けるVBA
  • 【エクセルVBA】選択範囲の数式を一括で絶対参照にするVBA
  • 【Excel】ブック全体から文字列を検索する方法

中の人

山田太郎111

自分向けの備忘録も兼ねて、
業務効率化に繋がる情報を投稿中です。

カテゴリー

  • Chrome (2)
  • Excel・CSV (22)
  • Google (1)
  • PDF (2)
  • Power Automate Desktop (1)
  • PowerPoint (3)
  • VBA (20)
  • Word (1)
  • WordPress (1)
  • スプレッドシート (1)
  • バッチファイル (1)
  • メール術 (1)
  • 単語登録 (1)
  • 考え方 (1)

アーカイブ

当サイトについて

  • プライバシーポリシー
  • 免責事項

スポンサーリンク

スポンサーリンク

関連記事

20260208サムネイル_【WordPress】スマホで表を横スクロールさせる方法|Gutenberg対応CSSを解説
  • WordPress

【WordPress】スマホで表を横スクロールさせる方法|Gutenberg対応CSSを解説

KINGKING007 2026年2月8日 0
2046_000
  • Excel・CSV
  • VBA

【エクセルVBA】指定列で指定文字列を含む、セル個数を集計するVBA

KINGKING007 2025年2月22日 0
2016_000
  • Excel・CSV
  • VBA

【エクセルVBA】特定の文字列を含むセルへ、一括で色を付けるVBA

KINGKING007 2025年2月22日 0
1978_000
  • Excel・CSV
  • VBA

【エクセルVBA】選択範囲の数式を一括で絶対参照にするVBA

KINGKING007 2022年10月10日 0
Copyright © All rights reserved. | MoreNews by AF themes。