【Excelマクロ】Copyメソッド

Excelマクロ

Copyメソッドとは

読んで字の通り、Copy(コピー)するためのものです。

通常の動作だと次の動作が一般的です。

①セルをコピーする
②貼り付けたいセルを選択する
③貼り付ける

これをそのままコードに起こすことができますが、VBAを知っているとさらにスマートにコードを書くことができます。

通常動作のマクロ化

今回のケースでは分かりやすくするために「A2をコピーする」→「A3に貼り付ける」方法を考えます。

少し分解をすると次のような流れになります。

①A2(2列目1行目)をコピーする
②A3を選択する(Select)
③選択されているシート(Activesheet)上で貼り付ける

これをVBAのコードで表すと、次のようになります。

Cells(2,1).Copy
Cells(3,1).Select
ActiveSheet.Paste

直接、セルの貼り付け、とできないのか?という点はありますが、この「Pasteメソッド」はシートのオブジェクト(今回はActiveSheet)には使えますが、セル(Cells)では利用できません。

Cellsで利用する場合には「PasteSpecialメソッド」がありますが、今回は複雑なので省略させていただき、また、別の機会でご説明します。

今回は単純に通常の動作をコピーすると上記のような流れになります。

他のコピーの例

コピーをする機会はセル以外にも、シートをコピーすることもあります。

シートのコピーはシート名の指定とその後にCopyをつけるだけでコピーをすることができます。貼り付けるためには、さらにBefore(〜の前)やAfter(〜の後ろ)といった通常の動作と同じようにどの位置にコピーするのかの指定が必要です。

例えば、Sheet2をコピーして、Sheet2の後ろにシートを追加したい場合には、次のようになります。

Sheets("Sheet2").Copy After:=Sheets("Sheet2")

また、範囲のコピーをするにはRange(レンジ)を使用して、Range(“A1:A10”)とするとA1〜A10の範囲の意味になるので、それを次のようにするとコピーできます。

Range("A1:A10").Copy
Range("A1").Select
ActiveSheet.Paste

コピーして貼り付ける場合には、この3行がセットになります。

まとめ

Copyメソッドは非常に簡単でコピーしたいセルやシートなどのオブジェクト(対象)の後に「Copy」と入力し、その後、セルでは「ActiveSheet.Paste」、シートだと引数にて「Before」「After」にて、コピーする場所を設定して、貼り付けを行います。

また、「切り取り」についてもCopyをCutとすれば切り取りになります。

今回は通常のセルのコピーの動作に基づいた内容をお伝えしましたが、実はVBAでは、もっとシンプルな方法があり、これはまた次回お伝えします。

コメント