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