この質問は、VBA: ユーザーがセルを削除した場合、Range オブジェクトはどうなりますか?
2 つのセル参照の同一性を確実にテストし、さらに重要なことに、セル参照を長期間保存する方法はありますか?
次の例を検討してください。
Sub TestCellIdentity ()
Dim r As Range
Set r = Application.ActiveCell
r.Value = "Some Value"
Dim ws As Worksheet
Set ws = r.Worksheet
Dim n As String
n = ws.Name
Dim c As Range
Set c = Worksheets (n).Cells (r.Row, r.Column)
MsgBox ("ActiveCell ptr: " & CStr (ObjPtr (r)) & "Value: " & r.Value _
& "; Indirect access ptr: " & CStr (ObjPtr (c)) & " Value: " & c.Value)
End Sub
この例を実行すると、ObjPtr (r) と ObjPtr (c) は同じセルを参照しているにもかかわらず、異なることがわかります。さらに悪いことに、(いくつかのテストから) 同じ ObjPtr 参照を持つ 2 つのセル オブジェクト (オブジェクト参照) が同じセルを参照することが保証されているとは想定できないようです (つまり、ObjPtr 値を保存して使用することはできません。たとえば、どこかのキーとして)。
したがって、私の質問:ワークシートのセルの名前変更、切り取り、および/または貼り付けを生き残る方法で、Excel のセルを一意に識別するにはどうすればよいですか?