皆さんは、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メソッドの詳しい使い方については以下で解説しているので、気になる方は見てみてくださいね!
補足:合わせて覚えると便利な行挿入・削除方法
最後に、行のコピーとあわせて覚えておくと便利な行の挿入、削除方法について解説します。
行を挿入する場合は、Insertメソッドを使って次のように書きます。
実行前:
行挿入サンプルコード:
Sub Test8() Rows(2).Insert End Sub
実行後:
行を削除する場合は、Deleteメソッドを使って次のように書きます。
実行前:
行削除サンプルコード:
Sub Test9() Rows(3).Delete End Sub
実行後:
挿入、削除どちらも簡単にできるので、合わせて覚えておくのがおすすめです!
以下で詳しく解説しているので、さらに知りたい方は見てみてくださいね!
まとめ
今回は、VBAで行を挿入する方法について解説しました。Excelで行の操作をするケースは多いので、行のコピー・挿入・削除は合わせて覚えておくのがおすすめです!
どれも使い方は簡単なので、ぜひ使ってみてくださいね!