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では、もっとシンプルな方法があり、これはまた次回お伝えします。
コメント