VBA【Sleep関数(API)】指定した時間分処理を止める



The following two tabs change content below.

taka

あることがキッカケでVBAを独学で勉強しました、今ではブログを通してVBAでできることを解説しつつ、VBAや他の言語の勉強、ブログ運営の勉強をしています(^^♪

どうもtakaです、VBAの処理を一定時間止めたいと感じたときはありませんか?

基本的にVBAで処理を一時停止することはできません、ですがAPIのSleep関数を使用すればそれが可能になります(^^♪

※Waitメソッドは除くWaitメソッドについてはこちら【VBA【Waitメソッド】指定した時間処理を止める
※APIについてはこちら

VBAのsleep関数とは?

Sleep関数は処理を止める時間をミリ秒(1秒の1000分の1)単位で指定することで処理を停止させることができる関数です^_^

このSleep関数は今までご紹介してきた関数とは違いAPI(Application Programming Interface)というExcelなどのアプリケーションを介してOSなどを操作することができるインターフェイスになります。

APIというと敷居が高いイメージがあるかもしれませんが、しっかりと使う事によってVBA関数ではできないことが可能になったりするので非常に便利です(。-`ω-)

今回はそんなAPIを使用してプログラムを待機することができるSleep関数の使い方についてご紹介していきます^_^

Sleep関数の使い方

では早速詳しい使用方法について解説をしていきます\(◎o◎)/!

まずVBAでAPIを使用する場合、APIを使用することをモジュール内で宣言しなければいけません。
※APIの宣言はモジュールの一番上でしなければいけません

下記の画像のように普段プログラムを記述する部分の一番上に挿入することによって効果を発揮します。

宣言しなかった場合はエラーになりますのでお忘れなく( ;∀;)私は結構忘れます(笑)

Sleep関数の書式

続いてSleep関数自体の書式です。

先ほども言いましたが【指定する秒数】には1/1000秒を指定してください。

例えば5秒停止させたい場合は【Sleep 5000】、3秒の場合は【Sleep 3000】のようにします。

間違えて【Sleep 1】のように記述しても停止したのかが全くわかりません(笑)

Sleep関数のサンプルコード

では実際にVBAでsleep関数を使用した場合のサンプルコードをご覧ください^_^

このサンプルコードはメッセージボックスのOKを押した3秒後に【3秒経過しました】というメッセージボックスを表示させるプログラムです。

Sleep関数使用時の注意点

Sleep関数使用時の注意点としてMicrosoftのヘルプに下記のような記述がありました。

32 ビット版の Office 2010 プログラムで VBA マクロを編集すると、”コンパイル エラー: 64 ビット版のシステムで使用するには、このプロジェクトのコードを更新する必要があります” というエラー メッセージが表示される

Microsoftヘルプより引用

Office2010を使用している場合はこのようなエラーが発生する場合があるので、その場合は【API宣言】の部分を下記のように書き換えることで回避できるとのことです。

ファイルやコードの利用、WEBサイトの利用について

サンプルコードなどは当サイトの免責事項をよくお読みになってからお使いください。

Twitterフォロー

 

Twitterもやってます(^^♪Excelについてはあまり触れませんがブログの更新のお知らせはツイートしています(^^♪

Twitterフォロー

 



コメントを残す

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