#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