こんにちは!大阪市住之江区に拠点を置く会社『縁紡ぐ』の稲垣です。
当社は、Excel、ACCESS、RPAなどのシステム開発や既存ツールを使った業務効率化の提案、また、ITスキルアップのための教育に力を入れています。効率的なビジネス運営を目指している企業様、ITスキルの向上を図りたい企業や個人の方に、最適なご提案をさせていただきます。業務プロセスの改善と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
結果が表示される
コメント