5.8 行や列のコピーと貼り付け
行や列のコピー・貼り付けの方法です。コピーは???.Copy、貼り付けは???.PasteSpecialを使います。もちろん、Destination:=での高速コピペも可能です!

ちなみに、???の部分はどちらもRangeColumnsRowsSelectionなど、行や列を表すオブジェクトです。詳しくは、5.1 セルや行列を扱うための基本をどうぞ。
1行だけをコピー・貼り付け
セルのコピー・貼り付けを行うときと指定が違うだけでノリは同じ!例では、2行目をコピーし3行目に貼り付けています。???.Copy???.PasteSpecialを使ったときは、書式だけをコピーしたり値だけをコピーすることも可能です。
5.5 セルのコピーと貼り付けを参照


Sub prcCopyPasteRow()

    '1行をコピー→貼り付け(多機能)
    Range("2:2").Copy
    Range("3:3").PasteSpecial

End Sub
 ※このエクセルマクロはワークシート内へ記述するマクロです


もちろん、Destination:=???での高速コピペも可能です。ただし、こちらの場合は書式だけをコピーしたりなどの便利な機能は使えません。

Sub prcCopyPasteRow2()

    '1行をコピー→貼り付け(高速)
    Range("2:2").Copy Destination:=Range("3:3")

End Sub
 ※このエクセルマクロはワークシート内へ記述するマクロです
複数の行をコピー・貼り付け
次に、複数の行を行まとめてコピーする場合です。例えば、1〜3行目までの3行をコピーし、5〜7行目に貼り付けを行うには次の通りにします。

ちなみに、???.Copy???.PasteSpecialで行った場合の貼り付け先指定は、範囲指定でも、先頭行のみ指定でもどちらの指定でも可能です。

ただし、Destination:=???による高速コピペの場合の貼り付け先指定は、必ずコピー元と同じ範囲が必要という扱いの違いがあるので、Happy! Happy! Islandではコピー元と同じ範囲を指定するに統一してます。


Sub prcCopyPasteRows1()

    'コピー元、貼り付け先ともに範囲を指定
    Range("1:3").Copy
    Range("5:7").PasteSpecial

End Sub

 または

Sub prcCopyPasteRows2()

    '貼り付け先は先頭行だけを指定するだけでもOK!
    'ちなみに、高速で…
    Range("1:3").Copy Destination:=Range("5:7")

End Sub
列のコピー・貼り付け
列のコピー→貼り付けは、Rangeの部分を列指定に変えるだけ(5.1 セルや行列を扱うための基本)で、必要なメソッドは同じです。なので、例は省略します…が手抜きではありません(汗)
Copyright(C) 1999-2006 結城圭介。 All rights reserved