マクロの処理時間を計測するマクロ
を示す。
■Excel-VBA マクロの処理時間を計測するマクロ
Sub sample42() Dim StartTime, StopTime As Variant StartTime = Time ''''''''''''''''''''''''''''''''''''''''' 'ω'ココに処理時間を計測するマクロを記述 ''''''''''''''''''''''''''''''''''''''''' StopTime = Time StopTime = StopTime - StartTime MsgBox "所要時間は" & Minute(StopTime) & "分" & second(StopTime) & "秒 です" End Sub※[2.] 変数宣言。
※[3.] 開始時間を「StartTime」に格納。
※[4.~6.] 処理時間を計測するマクロ。
※[7.] 終了時間を「StopTime」に格納。
※[8.] 所要時間計算。
※[9.] 所要時間をメッセージボックスで表示。
■マクロ実行対象
以下のマクロの処理時間を計測する。約3秒程度。For i = 2 To 1000000 i = i +1 - 1 Next i
■マクロ実行結果
実行すると、メッセージボックスにマクロの処理時間が表示される。
※45分22秒はたとえばの話。
■あとがき
今回はExcel VBAマクロ。マクロの処理時間を計測するマクロ
を示した。
【用途】
・同じ結果が得られるコードで
どちらが処理時間はやいか計測する場合。
・コードの各工程の所要時間を計測、
一番時間のかかる部分の記述を見直し、
処理時間短縮をはかる場合。
■例 WorkDay関数の記録
【品目A】
'44秒,標準
'39秒,配列使用
'23秒,祝日考慮なし
'27秒,日付の足し算のみ
'28秒,if追加
'27秒,if追加,品目A中心
'27秒,if追加,祝日なし,祝日あり同様,品目A中心
【品目B】
'42秒標準
'41秒,if,品目A中心だと17秒
WorkDay関数の祝日を除外すると
処理時間が短くなるとか、
ifはあってもなくても処理時間ほとんどかわらない
とかがわかる。
時間のかかる工程で様々なパターンを考え、
どれが最もはやいかタイムアタックする。
少しの時間短縮でも毎日積み重なると
長時間なるから考える価値がある。
あと一応試したが、
LibreOffice Basicでは使えなかった。
コードの先頭行に
Option VBASupport 1記述して試すとデータ型エラーがでる。
なので変数の型を「Variant」から
「Single」や「Double」、「Date」に変えたが
正しい所要時間が表示されなかった。
以上。