範囲が広い場合にはセルを一つずつ操作するよりも、一旦配列にコピーして操作したほうが速い(らしい)。
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