Q.マクロの終わる時間をストップウオッチで細かく正確に計るのって、大変でしょうね!?
A.実は、プロの現場ではプログラムの処理時間の測定にストップウオッチのような(人為的な古来の)物は使いません!(笑)
通常、処理時間を計るという場合にはプログラム内に関数を組み込んでおけば自動で時間の計測ができます。(しかも、いちいち手で測るよりずっと正確に詳細にできます。)
以下は、その「VBAの処理時間の計り方」の一番簡単なやり方のコード例です。
++++++++++++++++++++++++++++―
'Windows起動からの経過時間をミリ秒単位で取得する関数の宣言
Declare Function GetTickCount Lib "kernel32.dll" () As Long '←32bitの場合(昔のpc)
Declare PtrSafe Function GetTickCount Lib "kernel32.dll" () As Long '←64bitの場合(※最近のpcは全部こっちです)
Sub Macro1()
stTimer = GetTickCount
測定する処理
・
・
・
endTimer = GetTickCount
Debug.Print "経過時間 = " & (endTimer - stTimer) / 1000 & "sec"
End Sub
++++++++++++++++++++++++++++―
ここで用いている GetTickCount という関数(WindowsAPI)は、時間をミリ秒単位(千分の1秒)で扱っていますので、
上記のように、最後に1000で割ってやれば分かりやすく秒単位での結果が得られます。
ちなみに、より正確にな時間測定をするのであれば、
起動中の他のソフトウェアを終了させた上で、これを数回実行してみて、その平均値なり、何度やってもほぼ毎回同じになるかどうか?ということをよく確認してくださいね。
(1回だけだと、たまたまタイミング悪く うらで何かの更新プログラム等が動いていたりして、正確な時間が測れないという場合も多々ありますので。)
無料メルマガの登録は、▼こちらから▼
「Go! Go! エクセルマクロをはじめよう!」