Warning: Trying to access array offset on false in /home/xs928011/kn-sharoushi.com/public_html/wp-content/themes/lionblog/single.php on line 12

Warning: Trying to access array offset on false in /home/xs928011/kn-sharoushi.com/public_html/wp-content/themes/lionblog/single.php on line 13

Warning: Trying to access array offset on false in /home/xs928011/kn-sharoushi.com/public_html/wp-content/themes/lionblog/single.php on line 14
【ExcelVBA】日付をまたぐ処理時間の計測 - 野口香社会保険労務士事務所

【ExcelVBA】日付をまたぐ処理時間の計測

処理時間の計測にはTimer()が便利ですが、日付をまたぐと0にリセットされてしまうので使えません。日付をまたぐときにはNow()を使います。

質問

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14282554634

あるマクロの開始から終了までの時間を秒単位で計測したいです。
そのマクロは数時間掛かるものなので、開始する時刻によっては日を跨いでしまいます。
これを実現するコードを教えてください。

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14282554634

回答

Sub 日付をまたぐ処理時間の計測()
    Dim startTime As Variant
    Dim endTime As Variant
    Dim processTime As Variant
    
    startTime = Now

    ' 長~~~~~~~い処理
    
    endTime = Now
    
    processTime = endTime - startTime
'    Debug.Print Format(processTime, "HH:NN:SS")
    Debug.Print Format(processTime, "HH") * 3600 + Format(processTime, "NN") * 60 + Format(processTime, "SS")
End Sub

解説

Nowで現在日時をとってきます。

Nowの型はVariant型です。

Nowでとってきた値を人が目で見て分かるようにするには、Format関数を使います。

Format関数で気をつけないといけない点は、月と分です。どちらもMMと表現している例をよく見かけますが

Format(processTime, “YYYY/MM/DD HH:MM:SS”)

これだとどちらが月でどちらが分か見分けがつきません(VBAは内部で解釈してちゃんと動きますが)。

分にはNNを使って区別する方がよいです。

Format(processTime, “YYYY/MM/DD HH:NN:SS”)

回答にあるコードはNNを使っています。

編集後記

日付をまたぐような長い処理と言うのは、私も経験がありますが、非常にいやなものですね^^;

仕事終わりにセットして、翌日朝出勤してきたときに「終わってるかな~?」と確認すると、終わってなかった、異常終了していた・・・orz なんて経験は何度もあります。

そのため、デバッグの仕掛けはあちこちに仕込んでおいたものです。

Nowの仕込みは基本ですね。あとは件数をログに吐くとか、StatusBarに表示するとか、DoEventsとか・・・。今はもう、こういう現場から退いて久しいのですが、たまに知恵袋で現役で苦しんでる方をお見かけすると、「頑張って!」と応援したくなります。


    Warning: Trying to access array offset on false in /home/xs928011/kn-sharoushi.com/public_html/wp-content/themes/lionblog/single.php on line 193

    Warning: Trying to access array offset on false in /home/xs928011/kn-sharoushi.com/public_html/wp-content/themes/lionblog/single.php on line 194

    Warning: Trying to access array offset on false in /home/xs928011/kn-sharoushi.com/public_html/wp-content/themes/lionblog/single.php on line 195
  • 前の記事
    NO IMAGE

    給与計算業務を受託していない理由 2023.07.06


  • Warning: Trying to access array offset on false in /home/xs928011/kn-sharoushi.com/public_html/wp-content/themes/lionblog/single.php on line 224

    Warning: Trying to access array offset on false in /home/xs928011/kn-sharoushi.com/public_html/wp-content/themes/lionblog/single.php on line 225

    Warning: Trying to access array offset on false in /home/xs928011/kn-sharoushi.com/public_html/wp-content/themes/lionblog/single.php on line 226
  • 次の記事
    NO IMAGE

    Googleマップのルート検索で失敗し(そうになっ)た話 2023.07.10