【ExcelVBA】処理を止める方法 Sleep関数 & Waitメソッド

こんなあなたにおすすめ

・Excel VBAで処理を止めたい

・Excel VBAでSleep関数の使い方を知りたい

・Excel VBAでWaitメソッドの使い方を知りたい

Excel VBAを使っていると、処理を止めたいというときがあります。

処理を止めるには、Sleep関数とWaitメソッドの2通りの方法があります。

今回は、Sleep関数の使い方、Waitメソッドの使い方、2通りの停止時間の比較を解説します。

Sleep関数の使い方

Sleep関数はWindows APIのため、呼び出す必要があります。
呼び出す方法は簡単で、VBE(コードを書いているエディタ)の一番上に以下のコードを書くだけでOKです。

Private Declare Sub Sleep Lib “kernel32” (ByVal ms As Long)

Sleep関数の使い方は、以下の通りです。
Sleep 停止時間

※停止時間は、ミリ秒単位です。

実際にSleep関数を使ったコードを見ていきましょう。

Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)

Sub test1()

    Dim time As Long
    Dim startTime As Double
    Dim finishTime As Double
    Dim processTime As Double
        
    time = 100
    
    startTime = Timer()
    
    Sleep time
    
    finishTime = Timer()
    
    processTime = finishTime - startTime
    
    Debug.Print Format(processTime * 1000, "#.#")  '101.6ミリ秒

End Sub

Waitメソッドの使い方

ApplicationオブジェクトのWaitメソッドを使うことで、Sleep関数と同じように処理を停止することができます。

基本的な書き方は、以下の通りです。
Application.Wait Now() + TimeValue(“00:00:00”)

※最小指定時間は、秒単位です。

停止時間をミリ秒単位で指定したい場合は、以下の通りです。
Application.Wait [Now()] + 500 / 86400000

※86400000は、1日をミリ秒単位にしたものです。

実際にWaitメソッドを使ったコードを見ていきましょう。

Sub test2()

    Dim time As Long
    Dim startTime As Double
    Dim finishTime As Double
    Dim processTime As Double
        
    time = 100
    
    startTime = Timer()
    
    Application.Wait [now()] + time / 86400000
    
    finishTime = Timer()
    
    processTime = finishTime - startTime
    
    Debug.Print Format(processTime * 1000, "#.#")  '97.7ミリ秒

End Sub

停止時間の比較

ここまで、Sleep関数とWaitメソッドの2通りの方法について見てきました。

実際使うとなったときに、どちらを使えばいいのかわからないとなるかもしれません。
そこで今回は、両者の停止時間を比較してみます。

停止時間が長いほど、誤差は少なくなる傾向でしたので、Sleep関数とWaitメソッドのどちらを使っても問題なさそうですね。

どちらも誤差はありましたが、計測していた感じではSleep関数の方が停止時間が安定していました。

Sleep

・Sleep関数

回数 100ms 200ms 500ms 1000ms
1 101.6 199.2 500 1000
2 101.6 203.1 500 1000
3 101.6 203.1 500 1000

・Waitメソッド

回数 100ms 200ms 500ms 1000ms
1 97.7 199.2 496.1 1000
2 93.8 199.2 496.1 1000
3 93.8 199.2 496.1 996.1

まとめ

ここまで、Sleep関数、Waitメソッドの使い方について解説しました。

2つの方法でほとんど差はないため、どちらを使ってもよさそうです。

個人的には、Sleep関数がおすすめです。
なぜなら、停止処理を何回かするのであれば、Sleep関数の方がコードが短くて済み、停止時間も安定しているためです。

個人の好みですので、まずは、ご自身で使ってみて決めてみるのがいいと思います。

Excelで作業効率をアップしたい方は、下記の記事もご参照ください。
>>Excelのショートカット一覧 覚えて作業効率アップ!!
>>Excelで覚えておくべき関数 作業効率アップ間違いなし

【Excelについて学びたい方】
Excel 最強の教科書[完全版]
【Excel VBAについて学びたい方】
Excel VBA 脱初心者のための集中講座
エンジニアを目指すなら、TechAcademy!
オンラインスクール受講者数No.1!

・自宅にいながらオンライン完結で勉強できる
➡スクールへの移動時間を削減するため、効率的に学習可能!

・受講生に1人ずつ現役のプロのパーソナルメンターがつく
➡分からないことがわかるまで徹底的にメンターに質問可能!

・チャットで質問すればすぐに回答が返ってくる
➡レスポンスが速いから、わからないことをその場で解決!

・オリジナルサービスやオリジナルアプリなどの開発までサポート
➡就職、転職のときに役立つポートフォリオを開発可能!

無料で体験できるので、まずはお試し
>>TechAcademyの無料体験はこちら

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です