EXCEL VBAメモ - Rangeで指定した範囲のセルの値を配列変数に
範囲が広い場合にはセルを一つずつ操作するよりも、一旦配列にコピーして操作したほうが速い(らしい)。
Sub sample() Dim r As Range, ra As Range Dim a As Variant Dim i As Long, col As Long, row As Long Set ra = Range("A1:D3") ' 初期値書き込み i = 1 For Each r In ra r.Value = i i = i + 1 Next ' セル範囲の値を配列変数へコピー a = ra ' 元の値を二乗する For row = 1 To UBound(a) For col = 1 To UBound(a, 2) a(row, col) = a(row, col) ^ 2 Next Next ' 配列をセルに書き戻し ra = a End Sub