検索

キーワード


Excel VBA Timerでマクロの処理の実行時間を計測する方法

  • 公開日:2020-12-07 12:48:38
  • 最終更新日:2021-02-02 14:48:31

はじめに

IMMRです。

作成したマクロの処理時間を計測したい時ってあると思います。


例えば、下記のように処理開始ボタンを押して、

処理が完了したメッセージが表示されるまでどれくらいの

時間がかかるかを計測したい時、あなたならどのようにしますか。


処理開始のボタンを押す。


図1 ブック(処理前)

処理前


処理が終了して、メッセージが表示される。


図2 ブック(処理後)

処理後


処理開始ボタンを押して処理を実行し、「処理終了」と表示されるまでの時間ですが

処理内容によって時間は変わります。(当然のことですよね)

プログラムによっては、一瞬で終わるもの、数分掛かるもの、30分以上かかるもの それぞれです。



マクロの処理時間を計測する方法として、

1つは、下記のようにパソコン上で時計を表示して、「処理終了」と表示するまでの時間を計測します。


図3 ブック(時間計測)

時間計測


これは、とても非効率な方法です。

これだと、何時に終了したかの確認も必要なのでずっとパソコンの前にいなくてはいけません。


そのため、もっと簡単に効率よく計測できる方法を紹介します。


1.処理時間を計測する方法について

マクロの処理時間を計測するしたい場合、

Timer()関数というものがあり、これを使用すると簡単に処理時間を計測出来ます。


Timer()関数は、当日0時からの経過時間を秒数で返します。

もし、16:00に実行すると57600.0という数値が返ります。

※60(秒)×60(分)×16 = 57600.0 です。


型は秒という数値なので、long、Single、Doubleなどで問題ありませんが、

0コンマ秒等精密に計測したい場合は、Single以上が必要です。


ストップウォッチのように時間を計測するのではなく、

処理開始時のTimer

処理終了時のTimer

を計測して、

Timer(処理終了時) ー Timer(処理開始時) = 処理にかかった時間

という形で計測します。


図4 Timerを使っての処理時間を計測する方法

時間計測イメージ



2.サンプルコード(処理時間を計測する)


処理時間を計測するサンプルコードは以下になります。

サンプルコード

Private Sub CommandButton1_Click()

    Dim Syo_Time As Single

    Syo_Time = Timer

処理

    MsgBox Timer - Syo_Time & " かかりました。"

End Sub


まず、処理開始する前、syo_Time(変数)にTimerの値をセットします。

処理が完了したら再び、Timerの値を取得して、先ほど取得したsyo_Time(変数)との差を調べます。

この差が処理時間になります。


※ボタンを使用しているので、プロシージャー名が「Private Sub CommandButton1_Click()」になっています。


3.理時間を計測する処理の実行

では、ボタンを作成してから

上記、コードを記載し、処理時間が計測できるか実行して確認してみます。


図5 ブック(処理前)

処理前

ボタンを押して、しばらく待つと

下記のように処理にかかった時間が表示されます。

図6 ブック(上記、コード実行後)

処理後


この処理では、約293秒と表示されました。

つまり、処理時間は、4分53秒かかったことになります。


処理時間が正しく計測出来ていることが確認出来ます。


【著者】

Imamura

今まではExcel VBAの開発をしてきました。
開発を主にしたものや他の業務の効率化を目指して行ったものさまざまです。
現在は、他のプログラミング言語に挑戦して、スキルアップを目指しています。

よく読まれている記事