セルの移動後にもご用心
シートの Move 後は、元のシートを参照していたオブジェクト変数は使い物にならなくなるってことを昨日の日記に書きましたが、今度はセルのお話です。
セルには Move はないけど、Cut & Paste が同じようなもんなので、これを試してみました。
一応、テスト用に2種類のプロシージャを書きましたが、同じ結果になります。
Sub Test1() Dim rngA As Range Set rngA = Worksheets(1).Range("A1") Debug.Print TypeName(rngA) rngA.Cut Destination:=Worksheets(2).Range("B2") Debug.Print TypeName(rngA) MsgBox rngA.Address(External:=True) End Sub
Sub Test2() Dim rngA As Range Set rngA = Worksheets(1).Range("A1") Debug.Print TypeName(rngA) rngA.Cut Application.Goto Worksheets(2).Range("B2") ActiveSheet.Paste Debug.Print TypeName(rngA) MsgBox rngA.Address(External:=True) End Sub
セルの場合も移動後のオブジェクト変数は正しいセルを参照しません。
エラーにならないし、MsgBoxにもちゃんとアドレスが表示されるので、一見 おっ、いけるじゃん と思えるのですが、よく見るとシートがダメです。
rngA は、Worksheets(1).Range("B2") という移動元でも移動先でもないセルを参照しています。
※.Excel World の 2007年3月7日 01:31 の日記をコピーしています。
http://excel.sns.fc2.com/excel/