Excel VBA でループ処理中にワークシートオブジェクトへの参照を何度も繰り返している箇所がある場合、その参照回数を減らすと、処理速度が向上するのではないかと考え、参照方法を検討しました。
特にループ処理中に同じワークシートオブジェクトを何度も参照する場合、処理速度が低下すると考えました。そこで、ループ処理の前にワークシートオブジェクトを作成しておいてから使用するようにしました。
検証した結果ですが、残念ながら、明らかな速度向上は見られませんでしたが、ループ処理中に同じ処理をしないほうが良いことは明白です。
■ 参照処理ごとにワークブックとワークシートオブジェクトが参照されるパターン
Dim i As Integer
For i = 1 To 10000
With Workbooks(ActiveWorkbook.Name).Worksheets("Sheet1")
.Range("A" & i).Value = "TEST"
End With
Next
■ ワークシートオブジェクトを最初に一度作成しておくパターン
Dim i As Integer
Dim ThisSHEET As Worksheet
Set ThisSHEET = ActiveWorkbook.Worksheets("Sheet1")
For i = 1 To 10000
With ThisSHEET
.Range("A" & i).Value = "TEST"
End With
Next