LoginSignup
0
6

More than 5 years have passed since last update.

VBA_実行時間測定クラス(ストップウォッチクラス)

Posted at

1.概要

プロジェクトの実行時間測定用にストップウォッチクラスを作成した。

2.ソースコード

テスト用Sub


Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)

Sub sub_ストップウォッチ()
    Dim sw As New StopWatch

    '総経過時間(スプリットタイム)測定スタート
    Call sw.Sprit_Start

    'ラップタイム記録
    Call sw.Lap
    Call Sleep(1000)

    'ラップタイム出力(同時にラップが記録される)
    Call sw.Lap_OutPut("ラップ1:", "秒")

    Call Sleep(2000)
    Call sw.Lap_OutPut("ラップ2:", "秒")

    '総経過時間を出力
    Call sw.Split_OutPut("総経過時間:", "秒")

End Sub


StopWatchクラス


Option Explicit
'実行時間測定用クラス

Dim me_splitStart As Double 'スプリットタイム測定開始時刻
Dim me_lap As Double 'ラップタイムを保持

Sub Class_Initialize()
End Sub

'-------ラップタイム用-------------

'前回Lapからの経過時間を記録
Public Function Lap() As Double

    Dim elaps As Double '前回ラップからの経過時間
    Dim timer_buf As Double

    timer_buf = Timer '現在時刻記録
    elaps = timer_buf - me_lap '前回ラップからの経過時間計算

    me_lap = timer_buf 'ラップを更新

    'return
    Lap = elaps

End Function

'Lapからの時間を出力(Lapも更新される)、結果はの表示形式は「引数1  結果  引数2」
Public Function Lap_OutPut(Optional arg_text1 As String, Optional arg_text2 As String) As Double
    Dim elaps As Double

    '経過時間を取得
    elaps = Me.Lap

    Debug.Print arg_text1 & Format(elaps, "0.000") & arg_text2

    '一応return
    Lap_OutPut = elaps

End Function


'-------総経過時間用(スプリットタイム)-------------

'スプリットタイム開始時刻を記録
Public Function Sprit_Start()
    me_splitStart = Timer
End Function

'Sprit_Startからの経過時間を取得
Public Function Split_() As Double
    Split_ = Timer - me_splitStart
End Function

'RunStartからの経過時間をPrint、結果はの表示形式は「引数1  結果  引数2」
Public Function Split_OutPut(Optional arg_text1 As String, Optional arg_text2 As String) As Double
    Dim elaps

    '経過時間を取得
    elaps = Me.Split_

    Debug.Print arg_text1 & Format(elaps, "0.000") & arg_text2

    '一応return
    Split_OutPut = elaps

End Function


3.出力

ラップ1:1.000秒
ラップ2:2.016秒
総経過時間:3.023

0
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
6