Excel VBAの処理で、コードの実行を一時停止させる。Sleepの効果的な活用法や実践例を解説していきます。使い方や注意点など、サンプルコードをもとに具体的に解説します。
ExcelVBAエキスパートベーシックは仕事の効率をあげる人の資格です。
本サイト参考:日常業務でExcelを多用し、手動作業を減らしたいと考えている方におすすめの記事
Excel VBA Sleepの基本的な使用方法
Sleepはファイルの処理や繰り返し処理の際に、一定時間の間隔を空けたい場合に使用します。たとえば、特定の処理後に一定時間待機して次の処理を開始する際に有用です。
たとえば、基幹システムからCSVファイルが吐き出されたのちに、ExcelVBAでCSVをExcelに読み込む際に利用する。
CSVファイルが作成されていたら、そのままExcelに読み込みするが、CSVファイルが未作成の場合は一定時間待って再処理するなどで利用できます。
Excel VBAにSleep関数は標準で備わっていないので、Windows APIを使ってSleepができます。
基本的な文法やVBAの実践的な応用までを網羅的に学習できる方法は、ExcelVBAエキスパート資格の取得を目指すこと。学習を通して、より効率的に、着実に基礎を身につけることが可能です。資格取得すれば、スキルの証明にもなり、職場での評価アップにも繋がるため、勉強を進めるモチベーションにもなります。
本サイト参考:マクロ知識がないから「何から学べば良いのかわからない」という人におすすめの記事
Excel VBA Sleepの使用例
#If VBA7 Then ' 64ビット版のExcelの場合
Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
#Else ' 32ビット版のExcelの場合
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If
Sub ExampleSleep()
' Sleep関数を使って5000ミリ秒(5秒間)待機する例
Sleep 5000
MsgBox "5秒経過しました!"
End Sub
Windows APIのSleepをVBAで呼び出し、5000ミリ秒(5秒間)プログラムの実行を一時停止させ、その後にメッセージボックスを表示します。
Excel VBA Sleepを使うときの留意点
Windows APIは、Windowsのバージョンやビット数(32ビットまたは64ビット)によって動作が異なることがあります。適切なバージョンやビット数に対応した宣言が必要です。
また、Sleepは一時停止中にExcelは応答しません。
Excel VBAで自動化するコードのベースを習得したい方におすすめ!
VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。
ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。
ExcelVBAエキスパートスタンダード
ExcelVBAの開発を仕事にする人が対象の問題集です。
Excel VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。