VBA Timer関数

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 6月 1, 2022

VBA Timer関数は、現在の日の午前0時から経過した秒数を返します。(Singleデータ型として返されます。)

VBA Timer関数の使用

次のコードでは、VBA タイマー関数を使用して、コードを実行する時点の真夜中から何秒経過したかを判断する方法を説明します。

Sub UsingTheVBATimerFunction()

    Dim secondsSince As Single

    secondsSince = Timer()
    Debug.Print secondsSince

End Sub

結果は次のようになります。

Using the VBA Timer Function

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

結果は次のようになります。

Getting the Actual Time in VBA

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 メソッドを挿入します。

vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples