VBA Timer関数
In this Article
VBA Timer関数は、現在の日の午前0時から経過した秒数を返します。(Singleデータ型として返されます。)
VBA Timer関数の使用
次のコードでは、VBA タイマー関数を使用して、コードを実行する時点の真夜中から何秒経過したかを判断する方法を説明します。
Sub UsingTheVBATimerFunction()
Dim secondsSince As Single
secondsSince = Timer()
Debug.Print secondsSince
End Sub
結果は次のようになります。
VBA Timerを使って実際の時刻を取得する
以下のコードを使用すると、Timer関数から返された秒数をhh:mm:ss形式に変換して実際の時間を確認することができます。
Sub GettingTheActualTime()
Dim secondsSince As Single
Dim cTime As Double
Dim theActualTime As Variant
secondsSince = Timer()
cTime = secondsSince / (86400)
theActualTime = Format(cTime, "hh:mm:ss")
MsgBox "午前0時からの経過時間(秒):" & secondsSince & vbNewLine & _
"実際の時刻:" & theActualTime
End Sub
結果は次のようになります。
VBAコードの実行速度を計測する
VBAで書き直したコードのベンチマークや「より速い」メソッドを議論したい場合、VBAの組み込みタイマーを使用することができます。コードの開始時にタイマーと等しい変数を設定し、終了時にタイマーからこれを減算すると、コードの一部が実行されるのにかかる時間の良い見積もりを得ることができます。
マクロの実行中に他のプログラムが実行されたり、実行されようとしたりすると、パフォーマンスに影響が出ることがあります。
次の例は、Sheet1のセルA1に「テスト」という単語を50万回書き込むのにかかる時間を確認するために使用されました。私のマシンでは21秒かかりました。
Sub BenchMark()
Dim Count As Long
Dim BenchMark As Double
BenchMark = Timer
'テストするコードの開始
For Count = 1 To 500000
Sheet1.Cells(1, 1) = "テスト"
Next Count
'テストするコードの終了
MsgBox Timer - BenchMark
End Sub
もし、コードの実行が遅い場合は、画面の更新を無効にすることでスピードアップできるか試してみてください。 タイマーの実行中にExcelの画面をアクティブにしておくには、コードにDoEvents メソッドを挿入します。