【VBA】時間を測るストップウォッチ(タイマー)のコードと使い方を紹介

こんにちは!大阪市を拠点に活動している『縁紡ぐ』の稲垣です。
SWELLを使ったホームページ制作や、Excel、ACCESS、RPAなどのシステム開発を行っています。
また、Excel、Word、Outlookの研修や、情報セキュリティ研修も行っています。身近なITの相談相手になりたいと思っています。
お気軽にお問い合わせください。
目次
処理の時間を測る
VBAは、大量のデータを処理するときに処理の速度が問題になることがあります。コードを改修する前に、実際に処理速度を測ることで、どれだけ改善したかも分かりやすくなります。
標準モジュールとクラスそれぞれでの作成方法について紹介します。
標準モジュールでの作成方法
STEP
標準モジュールを作成し、オブジェクト名をStopWatchにする


STEP
コードを作成する
' ==========================================================================
' 概要 : 処理時間を計測するタイマー
' 作成日 / 作成者 : 2024/7/24 合同会社縁紡ぐ 稲垣敦
' 修正履歴 :
' ==========================================================================
Option Explicit
Private mStartTime As Double
Private mEndTime As Double
' タイマーを開始する
Public Sub StartTimer()
mStartTime = Timer
End Sub
' タイマーを停止する
Public Sub StopTimer()
mEndTime = Timer
End Sub
' 経過時間をフォーマットして文字列として取得する
Public Function GetFormattedElapsedTime() As String
GetFormattedElapsedTime = "処理にかかった時間:" & mEndTime - mStartTime & "秒"
End Function
STEP
使ってみるコードサンプル
' 実行例
Sub Example()
' タイマーを開始
StopWatch.StartTimer
' 処理をここに追加
' タイマーを停止
StopWatch.StopTimer
' 経過時間を表示
MsgBox StopWatch.GetFormattedElapsedTime()
End Sub
STEP
結果が表示される

クラスで作成する
STEP
クラスモジュールを作成し、オブジェクト名をStopWatchにする


STEP
コードを作成する
' ==========================================================================
' 概要 : 処理時間を計測するタイマー
' 作成日 / 作成者 : 2024/7/24 合同会社縁紡ぐ 稲垣敦
' 修正履歴 :
' ==========================================================================
Option Explicit
Private mStartTime As Double
Private mEndTime As Double
' タイマーを開始する
Public Sub StartTimer()
mStartTime = Timer
End Sub
' タイマーを停止する
Public Sub StopTimer()
mEndTime = Timer
End Sub
' 経過時間をフォーマットして文字列として取得する
Public Function GetFormattedElapsedTime() As String
GetFormattedElapsedTime = "処理にかかった時間:" & mEndTime - mStartTime & "秒"
End Function
STEP
使ってみる
' 実行例
Sub Example()
' StopWatchクラスのインスタンスを作成
Dim myStopWatch As StopWatch
Set myStopWatch = New StopWatch
' タイマーを開始
myStopWatch.StartTimer
' 処理をここに追加(例として3秒待つ)
' タイマーを停止
myStopWatch.StopTimer
' 経過時間を表示
MsgBox myStopWatch.GetFormattedElapsedTime()
' クラスのインスタンスを解放
Set myStopWatch = Nothing
End Sub
STEP
結果が表示される

コメント