未分類

Excel - ワークシートへの参照を減らして、処理速度向上を試す (1)

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

-未分類