Timer関数を使ったストップウォッチ|エクセルVBA
エクセルVBAで経過時間を計測するには2つ。
Windows API を使ったストップウォッチはこちらの記事をご参照ください。
今回はTimer関数を使ったストップウォッチを作ってみました。
Timer関数とは?
午前 0 時からの経過秒数を表す単精度浮動小数点数型 (Single) の値を返します。
Microsoft Windows では、Timer 関数は秒の小数部を返します。Macintosh では、タイマー刻みは 1 秒です。
Windowsであればミリ秒の計測も可能です。ただ、APIのtimeGetTimeと比較すると計測の正確性がやや劣るとの指摘が散見されます。
実行用標準モジュールを用意
さっそく試してみます。
標準モジュール「blMdlTimer」
Option Explicit Sub サンプル1() Const cRow As Long = 1000 Const cCol As Long = 100 Dim dblTimer As Double Dim lngR As Long Dim lngC As Long dblTimer = Timer With ActiveSheet For lngR = 1 To cRow For lngC = 1 To cCol .Cells(lngR, lngC).Value = lngR * lngC Next lngC Next lngR End With MsgBox Timer - dblTimer End Sub
最初に、処理開始時の時間をdblTimerに格納します。
その後、1~1,000行、1~100列に適当な数字を入れるようにしています(この処理自体はなんの意味もありません)。
最後に、その時点の時間から処理開始時点の時間を差し引くことで、処理に掛かった時間を取得しています(ここではメッセージボックスで表示しています)。
はい、以上です。
そうなんです。Timer関数は非常にお手軽に使える関数なんですね。APIのtimerGetTimeと比べると圧倒的に簡単に使えます。
時間計測の正確性にやや難ありなんて話もありますが、ミリ秒単位のシビアは時間計測が必要でなければTimer関数で十分なんですね。