今回のコードは以下のメッセージボックスに記載されているように処理時間を取得するコードです。 今作っているプログラムにちょこっと加えるだけで処理時間を計測できますので、ぜひ使ってみてください。

    

処理時間を計測するコード

途中にメインの処理をいれています。 ここでは、100万行A列に連番を入力しているだけですが、私の環境では約30秒かかる処理でした。

Sub 処理時間計測()

    ' 時間計測開始
    Dim startTime, stopTime, processTime, resultTime As Variant
    startTime = Time

    ' ******************
    ' メインの処理
    For i = 1 To 1000000
        Cells(i, 1) = i
    Next
    ' ******************

    ' 時間計測終了
    stopTime = Time
    processTime = stopTime - startTime
    If Minute(processTime) < 1 Then
        resultTime = Second(processTime) & "秒"
    Else
        resultTime = Minute(processTime) & "分" & Second(processTime) & "秒"
    End If
    startTime = stopTime
    MsgBox resultTime

End Sub

  切り出すと、以下のようになります。

 

↓計測開始

    ' 時間計測開始
    Dim startTime, stopTime, processTime, resultTime As Variant
    startTime = Time

↓計測終了

    ' 時間計測終了
    stopTime = Time
    processTime = stopTime - startTime
    If Minute(processTime) < 1 Then
        resultTime = Second(processTime) & "秒"
    Else
        resultTime = Minute(processTime) & "分" & Second(processTime) & "秒"
    End If
    startTime = stopTime
    MsgBox resultTime

 

ポイント

メッセージに表示する文字列はIF文の中で生成しています。

ここは任意に変更しても構いません。

また、メッセージボックスに表示するのではなく、シートに書き込みを行う場合は最下行のmsgboxの部分を

 

修正前:MsgBox = resultTime

修正後:Range(“A1”) = resultTime

 

等に変更すると、書き込みができます。  

 

さいごに

みなさんが作っているプログラムを実行したときに「すごい時間かかるなー、このコード」と思った時に処理時間を計測して、何か対策を打った方がよいと思います。

このコードも使ってもらえると嬉しいです!

 

ではまた!