- 締切済み
VBAのCopyコマンドについて
エクセルVBAでシート3のRangeの値をからシート2のRangeへデータをコピーしようとしているのですが Sheets(3).Range("B3:B100").Copy _ Sheets(2).Range(Cells(3, col2 - 1), Cells(100, col2 - 1)) がうまくいって、 Sheets(3).Range(Cells(2, col1), Cells(100, col1)).Copy _ sheets(2).Range(Cells(2, col2), Cells(100, col2)) が何故、オブジェクト定義エラーになってしまうのがわかりません。 col1、col2は列の変数です。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
補足
回答ありがとうございます。 Sheets(2).Range(Cells(3, col2 - 1), Cells(100, col2 - 1)) を実行しているときはSheets(3)をアクティブにしています。 また、Copyの引数部分はシートを指定しなくても通りました。 ですので、どういうときはシートの指定が必要というのがわからなくなってしまいました。(Rangeで変数を使用する場合?でも引数内ではい必要ない?) 度々すいませんが教えて頂ければと思います。 一応、全ての処理分を下に乗せました。 col1 = 3 col2 = 2 For col1 = 3 To 14 Sheets(3).Activate Sheets(3).Range("A2:X100").Sort Key1:=Sheets(3).Cells(2, col1),Order1:=xlDescending, Header:=xlYes, OrderCustom:=1,MatchCase:=False, Orientation:=xlTopToBottom, SortMethod:=xlPinYin,DataOption1:=xlSortNormal Sheets(3).Range("B3:B100").Copy Sheets(2).Range(Cells(3, col2 - 1), Cells(100, col2 - 1)) Sheets(3).Range(Sheets(2).Cells(2, col1), Sheets(2).Cells(100, col1)).Copy Sheets(2).Range(Sheets(2).Cells(2, col2), Sheets(2).Cells(100, col2)) col2 = col2 + 2 Next col1