Excel VBAで複数のプロシージャを跨いで処理時間を計測したいとき、開始時刻を取得し、プロシージャが終了した時点でその処理時間を算出する方法があります。この記事では、その方法と実装例を紹介します。
1. 複数プロシージャを跨ぐ処理時間の算出の基本
まず、基本的な方法として、処理時間を計算するためには、最初に開始時刻を記録し、最後に終了時刻を取得してその差を計算する必要があります。しかし、複数のプロシージャを呼び出す場合、プロシージャ間での処理時間を正確に把握するためには、グローバル変数や引数を使って開始時刻や終了時刻を伝える方法が効果的です。
2. グローバル変数を使った処理時間の計算
複数のプロシージャを跨いで処理時間を計算するには、開始時刻と終了時刻をグローバル変数として宣言し、それらを各プロシージャで扱う方法があります。以下にその実装例を示します。
Dim 開始 As Date, 終了 As Date, 処理時間 As Date
Sub メイン処理()
開始 = Now
Call 処理1
Call 処理2
終了 = Now
処理時間 = 終了 - 開始
MsgBox "処理時間: " & 処理時間
End Sub
Sub 処理1()
' 何か処理を書く
End Sub
Sub 処理2()
' 何か処理を書く
End Sub
この例では、`メイン処理`というプロシージャが開始時刻を記録し、その後、`処理1`と`処理2`を呼び出しています。最後に終了時刻を記録し、処理時間を算出します。
3. 引数を使ってプロシージャ間でデータを受け渡す方法
引数を使用して、各プロシージャで処理時間を計算する方法もあります。これにより、各プロシージャ内で独自に処理時間を管理し、メインのプロシージャに戻すことができます。
Sub メイン処理()
Dim 開始 As Date, 終了 As Date, 処理時間 As Date
開始 = Now
Call 処理1(開始, 終了)
処理時間 = 終了 - 開始
MsgBox "処理時間: " & 処理時間
End Sub
Sub 処理1(ByRef 開始 As Date, ByRef 終了 As Date)
' 何か処理
終了 = Now
End Sub
この方法では、`処理1`内で終了時刻を設定し、それを`メイン処理`に戻しています。
4. 時間が計算されるタイミング
時間の経過は、`Now`関数を使って記録されます。`Now`関数は、システムの現在時刻を取得するため、正確に計測できますが、プロシージャ内で呼び出す順番やタイミングによって結果が異なることもあります。処理を分けた場合でも、時間計測が正確に行えるように調整することが大切です。
5. まとめ
VBAを使用して複数のプロシージャを跨ぐ場合でも、グローバル変数や引数を使って処理時間を計算することができます。これにより、全体の処理時間を正確に把握し、効率的に作業を進めることができます。

コメント