dポイントプレゼントキャンペーン実施中!

excel VBA コピーした行を指定列からペーストするやり方があれば教えてもらいたいです。

Worksheets1.Rows(2).Copy (Worksheets2.Rows(4))

上記のようにシート1の2行目をシート2の4行目にコピペする時に、
シート2の4行目のC列を起点に貼付指定する方法はありますでしょうか。

イメージとしては
Worksheets1.Rows(2).Copy (Worksheets2.Range("C4"))
でC4セルをペースト範囲のスタートとして、そのままC列から右側にコピーしてきた行を貼り付ける感じです。
(因みに上記だとだとエラー「RangeクラスのCopyメソッド失敗」となります)

宜しくお願い致します。

A 回答 (3件)

こんにちは



Row.Copy だと1行分全部なので、列位置をずらしたらコピー先のセル範囲とサイズが一致しなくなるため、当然ながらエラーになります。

コピー前に、Intersectメソッド等でUsedRangeとの共通部分にするとか、あるいは、通常よく行われているように「使用している最終列まで」などとして、コピーの対象範囲を縮めておけば、ご提示の方法そのままでコピーできるものと思います。
(シートで列をめいっぱい使っている場合には、上記と同様の理由からエラーになりますが、そのようなことはまずないものと思いますので)
    • good
    • 1
この回答へのお礼

ありがとうございます。
行全体のセル範囲(限界)が定められているという事に思い至っていなかったです。
参考にさせて頂きます。「使用している最終列まで」考えてみます。

お礼日時:2021/10/22 17:25

シート1の2行目をシート2の4行目のC列を起点に貼付するのは、手作業でもできないんでは?なぜなら、2行目の右端の2つのcellが、貼り付ける対象領域からはみ出しちゃうからです。


なので、2行目全部じゃなくてCells(2,1)〜Cells(2,n) (nは必要なところまで。最大で(2^14)-2 = 16382)をcopyすればいいんです。
    • good
    • 1
この回答へのお礼

ありがとうございます。
列数が多て確認が面倒&また表項目に変更があっても対応出来る様に、と考え出来る仕組みがあれば楽かなと思ったのですが、地道にやります。
対象領域の範囲が定められているという事を思い至っていなかったです。

お礼日時:2021/10/22 17:25

Worksheets1.Rows(2)



こちらをセル範囲で指定してあげれば良いのでは?
起点と終点(例: .Range("C2:Z2")など)で。
    • good
    • 1
この回答へのお礼

ありがとうございます。
列数が多て確認が面倒&また表項目に変更があっても対応出来る様に、と考え出来る仕組みがあれば楽かなと思ったのですが、地道にやります。

お礼日時:2021/10/22 17:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています