- ベストアンサー
Excel VBAでセル範囲のコピー、貼り付け方法
VBA初心者です。 今、Excel VBAでセル範囲を他のBookからコピーして張り付けるマクロを記述を次のように ThisWorkbook.Worksheets(2).Range(Cells(203 + ki, 5), Cells(203 + ki, 7)) = wkd.Worksheets(3).Range("M82:082") 書くとエラーになってしまいます。 セルが範囲でなくて、1つだとうまくいくのですが、範囲にするとエラーになってしまいます。 どうしたら、解決できますか、できるだけ簡単な記述でお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 すでに、指摘はありますが、エラー自体は、オー(0) とゼロ(0)の間違いだと思います。 それと、Range オブジェクトの引数の、Cells プロパティは、親オブジェクトとは繋がっていませんから、つなげてやらないといけません。基本的なことですが、そのコードでは、モジュールやActiveSheet の条件によってエラーになりますから、ひとつずつ親オブジェクトを入れても良いのですが、以下のように、With ステートメントを使って入れます。 なお、値貼り付けするなら、Copy しておいて、PasteSpecial (xlPasteValues) でも良いです。 '------------------------------------------- Dim wkd As Workbook Dim ki As Long Set wkd = Workbooks("Test1.xls") ki = 5 With ThisWorkbook.Worksheets(2) .Range(.Cells(203 + ki, 5), .Cells(203 + ki, 7)).Value _ = wkd.Worksheets(3).Range("M82:O82").Value End With
その他の回答 (2)
- xls88
- ベストアンサー率56% (669/1189)
>セルが範囲でなくて、1つだとうまくいくのですが、範囲にするとエラーになってしまいます。 エラーの内容も提示して相談するようにしてください。 構文は間違ってはいないと思います。 ただ、転記ミスかもしれませんが、提示されたコードで右辺の wkd.Worksheets(3).Range("M82:082") でセルの列番地が数字の0(ゼロ)になっています。 アルファベットのO(オー)と間違っているようです。 念のため、元のコードはどうなっているか調べてみてください。
- ai0011_200
- ベストアンサー率39% (107/274)
以下の記述でコピーできます。 例)Sheet1のA1~B2をSheet2のC1~D2へコピー Sheet1.Range(Cells(1, 1), Cells(2,2)).Copy Destination:=Sheet2.Cells(1, 3)
補足
早速の回答ありがとうございます。 何とかできました。
補足
回答ありがとうございます。 うまくできました。 Withステートメントが必要なのですね、ありがとうございました。