これは答えではなく、代替案です。
Shiin が提案したように、範囲に名前を付けることが方法ですが、500 個のセルがある場合、前述のように、500 個のセルに名前を付けてコードで使用するのは非常に面倒です。別の方法は、スマート コードを使用することです。例を見てみましょう
このようなコードがあるとしましょう
Sub Sample()
Range("B3").Value = Range("B200")
Range("B4").Value = Range("B201")
Range("B5").Value = Range("B201")
' And
' So On
' till
Range("B500").Value = Range("B697")
End Sub
このコードを書く最良の方法は次のようになります
Sub Sample()
Dim i As Long
For i = 200 To 697
Range("B" & i - 197).Value = Range("B" & i)
Next i
End Sub
たとえば行 300 に行を挿入すると、上記のコードを 2 つの部分に分割するだけです
Sub Sample()
Dim i As Long
For i = 200 To 299
Range("B" & i - 197).Value = Range("B" & i)
Next i
For i = 301 To 698
Range("B" & i - 197).Value = Range("B" & i)
Next i
End Sub
したがって、行を挿入するたびに、for ループを余分な部分に分割するだけです。これは面倒に見えますが、500 個のセルに名前を付けてコードで使用するよりははるかに優れています。
マクロを 1 回だけ使用する予定の場合 (つまり、1 回だけ使用する場合)、先にお読みください。
ユーザーが行を挿入したときにセルが更新されないことが心配な場合は、値を割り当てる代わりに数式を割り当てることができます。
例えば
Range("B3").Formula = "=B200"
=B200
これにより、 cellに数式が入力されB3
ます。次回、行を挿入して 200 行目の位置を移動すると、数式がセル内で自動的に更新されることに気付くでしょう。B3
HTH