'タイマーのスタート Dim 処理開始 As Double 処理開始 = Timer '処理時間の取得 Debug.Print Timer - 処理開始
処理時間の計測にはTimer関数を使用します
この関数は0時からの経過時間を返す関数で、引数はありません
これは時間を返す関数ですが実際のデータは小数点値を含むSingle型で返されます
ミリ秒までの時間計算ができるため処理時間の計測に向いています(Macでは秒刻みの計測しかできないようです)
ちなみに、Single型で返されますがちゃんとそれ以下の範囲も存在しているため変数の型はDouble型で取得させて計算したほうが精度が高くなります
コード解説
「Dim 処理開始 As Double」
「処理開始 = Timer」
1行目で変数の宣言、上記にもあるように型はDouble型を使用してください
2行目で変数に開始前の時間を代入することで、計測の開始時間とします
この2行目のコードまでに時間計測を行わない処理があれば、その後にこのコードは移動してください
「Debug.Print Timer – 処理開始」
ここで取得していた変数の時間と現在の時間を計算して、差の時間で処理時間を計測することが出来ます
出力はイミディエイト画面に出力されます、メッセージボックスだと処理が停止してそのメッセージを終了させるまでも計測の時間に含まれるので向いていません
処理時間計測の重要性
基本的に処理時間の計算を使う場面は、処理を作成しその処理がどれぐらい時間をかかるかというのを計算するというよりは実際に作った処理の時間が思ったよりも長かったという場合にどこで処理の時間が長くかかっているかを調べる場合に使用します
処理時間の改善に関しては、原因がさまざまあり単純にExcelの画面更新を抑止すればいいとか、再計算を無くせばいいというものではありません
実際計測してみると、画面更新の抑止が意味が無かったりする場合もあります
一定の処理ごとの時間計算をゼロからきっちり計算させる場合は時間計算をした時点で一度変数をリセットする必要があります
これは単純に2行目のコードをもう一度実行するだけでいいです
そこから得た処理の方法と手順に改善の余地がないかをWeb等の情報で検討してみてください、過去に偉人たちがすでに解決してくれていることばかりのはずなので
ただ、ブックを開くなどどうしようもない処理もあるのでその場合はブックを処理前に開いておくとか方法を検討します
また上記にもあるようにメッセージボックスで処理が一時中断するものがある場合は、そこの時間は考慮しないようにうまくこのコードを配置してください
あと、0時からの経過時間なので日をまたぐ計算を行う場合は、一度日をまたぐ前に数値を保持しておく必要があります
そんなに長い時間の計測をするかどうかは分かりませんが・・・