【ExcelVBA入門】行をコピーするためのCopyメソッドの使い方とは

皆さんは、VBAで行のコピーをする方法を知っていますか?データの追加をする際に、行のコピーをするケースはよくありますよね。

そこで今回は、

  • 行をコピーする方法
  • といった基礎的なことから、

  • セル範囲を指定して行をコピーする方法
  • 複数行を指定して行をコピーする方法
  • 合わせて覚えると便利な行の挿入・削除方法
  • といった応用的な方法まで、徹底的に解説します!

    行をコピーするためのInsertメソッドの使い方とは

    はじめに、行をコピーする方法について簡単に解説します。

    VBAで行をコピーする場合は、Copyメソッドを使って以下のように書きます。

    コピー方法:

    Rows(コピー元の行番号).Copy

    ただ、コピーしたデータは別のセルに貼り付けて使うケースが多いので、データの貼り付け方を同時に覚えておくのがおすすめです。

    データ貼り付け方法1:

    Rows(コピー元の行番号).Copy Destination:=Rows(コピー先の行番号)
    

    データ貼り付け方法2:

    Rows(コピー元の行番号).Copy
    Rows(コピー先の行番号).Paste
    

    方法1はコピーと同時に貼り付ける方法で、方法2はコピー後にPasteメソッドを使って貼り付ける方法です。

    また、コピーするとExcel上で次のようにコピーした状態が残ってしまいます。

    3行目をコピーした後、点線でコピー状態が残っているサンプルです。そのため、コピー状態を解除するコードを合わせて覚えておくのがおすすめです!

    コピー状態を解除するコード:

    Application.CutCopyMode = False

    サンプルコード

    次に、サンプルコードをもとに、具体的な使い方を解説します。

    行を指定して1行コピー

    はじめに、1行コピーする方法について解説します。

    実行前:

    サンプルコード1:

    Sub Test1()
      Rows(2).Copy Destination:=Rows(10)
    End Sub

    実行後:

    2行目のデータをコピーして、10行目にペーストするサンプルです。

    このように、簡単にセルをコピーすることができます。

    セル範囲を指定してコピー

    次に、セル範囲を指定して行をコピーする方法について解説します。

    実行前:

    サンプルコード:

    Sub Test2()
      Range("A2:B2").Copy Destination:=Range("A10:B10")
    End Sub

    実行後:

    サンプルでは、「A2:B2」の範囲のデータをコピーし、「A10:B10」の範囲に貼り付けています。

    セル範囲を変更すれば、指定範囲でコピー・ペーストすることができます。行全体ではなく範囲を指定してコピーする場合は、この方法を使えばOKですね。

    複数行コピー

    次に、複数行を一括でコピーする方法について解説します。

    実行前:

    サンプルコード:

    Sub Test3()
      Range("2:4").Copy Destination:=Rows(10)
    End Sub

    実行後:

    サンプルでは、2行目~4行目のデータをコピーし、10行目からデータを貼り付けています。「Range("2:4")」の行範囲を変更すればコピーする範囲を変更でき、「Rows(10)」の行番号を変更すればコピー先の位置を変更することができます。

    複数行をコピーする場合は、この方法を使えばOKですね。

    変数を使ったコピー

    次に、変数を使った行のコピー方法について解説します。

    実行前:

    サンプルコード:

    Sub Test4()
      Dim copyRow As Integer
      Dim pasteRow As Integer
      copyRow = 2
      pasteRow = 10
    
      Rows(copyRow).Copy Destination:=Rows(pasteRow)
    End Sub

    実行結果:

    変数を使うと、行数を変えるときに変数の値を変えるだけで済むため、使い勝手がよくなるのでおすすめです!

    選択している行のすぐ下にコピー

    次に、選択している行のすぐ下にコピーする方法について解説します。

    実行前:

    サンプルコード:

    Sub Test5()
      Rows(ActiveCell.Row).Copy Destination:=Rows(ActiveCell.Row + 1)
    End Sub

    実行後:

    選択している行は「ActiveCell.Row」で取得することができるので、「ActiveCell.Row + 1」で選択している行の下の行にコピーしています。

    サンプルでは8行目のセルを選択しているので、8行目をコピーして9行目に貼り付けています。

    列をコピーする方法とは

    ここまで行をコピーする方法を解説してきましたが、同じような方法で列も簡単にコピーすることができます。

    実行前:

    サンプルコード:

    Sub Test6()
      Columns(3).Copy Destination:=Columns(4)
    End Sub

    実行後:

    列番号を指定する場合はRowsの部分をColumnsに変更するだけですむため、とても簡単ですよね。

    このように、列も簡単にコピーすることができます。

    形式を選択して貼り付けるためのPasteSpecialメソッドの使い方とは

    ここまでそのままコピーする方法のみ紹介してきましたが、形式を選択して貼り付けたい場合もありますよね。形式を選択して貼り付ける場合は、PasteSpecialメソッドを使います。

    PasteSpecialメソッドは、Pasteオプションで貼り付ける方法を指定することで、形式を選択して貼り付けることができます。

    実行前:

    サンプルコード:

    Sub Test7()
      Rows(1).Copy
      Rows(10).PasteSpecial Paste:=xlPasteFormats
    
      'コピーモードを解除
      Application.CutCopyMode = False
    End Sub

    実行後:

    PasteSpecialメソッドの詳しい使い方については以下で解説しているので、気になる方は見てみてくださいね!

    【ExcelVBA入門】PasteSpecialメソッドで形式を選択して貼り付ける方法
    更新日 : 2019年8月28日

    補足:合わせて覚えると便利な行挿入・削除方法

    最後に、行のコピーとあわせて覚えておくと便利な行の挿入、削除方法について解説します。

    行を挿入する場合は、Insertメソッドを使って次のように書きます。

    実行前:

    行挿入サンプルコード:

    Sub Test8()
      Rows(2).Insert
    End Sub

    実行後:

    行を削除する場合は、Deleteメソッドを使って次のように書きます。

    実行前:

    行削除サンプルコード:

    Sub Test9()
      Rows(3).Delete
    End Sub
    

    実行後:

    挿入、削除どちらも簡単にできるので、合わせて覚えておくのがおすすめです!

    以下で詳しく解説しているので、さらに知りたい方は見てみてくださいね!

    【ExcelVBA入門】行を挿入するためのInsertメソッドの使い方とは
    更新日 : 2019年4月5日
    【VBA入門】行・列の削除とクリアをする方法
    更新日 : 2019年4月25日

    まとめ

    今回は、VBAで行を挿入する方法について解説しました。Excelで行の操作をするケースは多いので、行のコピー・挿入・削除は合わせて覚えておくのがおすすめです!

    どれも使い方は簡単なので、ぜひ使ってみてくださいね!

    LINEで送る
    Pocket

    ITエンジニアへ転職したい方におすすめ

    自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
    エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

    しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

    こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

    そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

    侍ワークスは、独自案件を多く掲載しているだけでなく、

    ・応募から就業まで一貫したサポート

    ・就業後もアフターフォロー

    といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

    まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

    書いた人

    Sanshiro Wakizaka

    Sanshiro Wakizaka

    新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。
    Webアプリ、業務アプリ開発において、要件定義、設計、インフラ、製造、テスト、運用保守など、様々な経験あり。
    また、侍ブログ編集部として、これまでに200記事以上の記事を執筆。
    現在はフリーランスエンジニア兼テックライターとして活動中。