Excel-VBA マクロの処理時間を計測するマクロ

2019/12/25

プログラム

t f B! P L
Excel VBAマクロ。今回は
マクロの処理時間を計測するマクロ
を示す。

■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」に変えたが
正しい所要時間が表示されなかった。
以上。

ブログ アーカイブ

ラベル

このブログを検索

スポンサーリンク

自己紹介

機械メーカー総合職正社員10年勤務後退職。 エクセルVBAプログラム歴 5年。 LibreOffice(無料)でVBAマクロ検証。
■Fortniteクエスト攻略動画■
■Twitter■
⇒詳細プロフィールを表示

QooQ