VBAで作ったマクロの実行時間を測る方法は簡単だ。
まず、Timer関数を使って開始時刻を取得する。
次に、同じくTimer関数を使って終了時刻を取得する。
終了時刻から開始時刻を引けば実行時間がわかる。
Dim start As Double
Dim finish As Double
start = Timer
'何らかの処理
finish = Timer
Debug.Print finish - start
A1からA1000のセルに1から1000までの数値を入力するマクロで実際に実行時間を計ってみる。
Sub test01()
Dim i As Long
Dim start As Double
Dim finish As Double
start = Timer
For i = 1 To 1000
Range("A" & i).Value = i
Next
finish = Timer
Debug.Print "直接入力"
Debug.Print finish - start
End Sub
このマクロを何度か実行すると、0.1875付近の値が出る。
では、セルに直接入力ではなく、配列から入力する形にするとどうなるだろうか?
Sub test02()
Dim arr(1 To 1000) As Long
Dim i As Long
Dim start As Double
Dim finish As Double
start = Timer
For i = 1 To 1000
arr(i) = i
Next
Range("A1:A1000").Value = WorksheetFunction.Transpose(arr)
finish = Timer
Debug.Print "配列から入力"
Debug.Print finish - start
End Sub
このマクロを何度か実行すると、0.015625付近の値が出る。
以上の結果から、配列を使うと10倍以上速度が向上するということだ。もちろん、処理によって配列の優位性はいくらか変わるだろうが、巷間言われているように大量のセルに記入するという処理では配列を使うのがいいだろう。