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

こんにちは!大阪市住之江区に拠点を置く会社『縁紡ぐ』の稲垣です。

当社は、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
結果が表示される
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次