皆さんは、VBAで行の挿入をする方法を知っていますか?データの追加をする際に、行を挿入するケースはよくありますよね。
そこで今回は、
- 行を挿入する方法
といった基礎的なことから、
- セル範囲を指定して行を挿入する方法
- 複数行を指定して行を挿入する方法
- 合わせて覚えると便利な行のコピー・削除方法
といった応用的な方法まで、徹底的に解説します!
行を挿入するためのInsertメソッドの使い方とは
はじめに、行を挿入する方法について簡単に解説します。VBAで行を挿入する場合は、Insertメソッドを使って以下のように書きます。
使い方:
Rows(行番号).Insert '行番号を指定する場合 Range(セル名).EntireRow.Insert 'セル名を指定する場合
「Rows(行番号).Insert」は行番号に入れた行に直接行を挿入します。
「Range(セル名).EntireRow.Insert」は「Range(セル名).EntireRow」で指定したセルの行数を取得してから、行を挿入します。また、次のようにオプションを後ろに付けて挿入することもできます。
オプションを付けた場合
Rows(行番号).Insert shift:=xlShiftDown
shiftオプションは挿入後に移動するセルの移動方法を指定することができ、「xlShiftDown」で下に移動、「xlShiftToRight」で右に移動することができます。
このように、簡単に行を挿入することができます。
サンプルコード
次に、サンプルコードをもとに、具体的な使い方を解説します。
行を指定して1行挿入
はじめに、1行挿入する方法について解説します。
実行前:
サンプルコード1:
Sub Test1() Rows(3).Insert End Sub
サンプルコード2:
Sub Test1() Range("A3").EntireRow.Insert End Sub
実行後:
サンプルコード1、2はどちらも同じ意味なので、直接行番号を指定する場合、セル名で指定する場合など用途に応じて使い分ければOKです。
セル範囲を指定して1行挿入
次に、セル範囲を指定して行挿入する方法について解説します。
実行前:
サンプルコード:
Sub Test3() Range("A3:B3").Insert End Sub
実行後:
サンプルでは、A3、B3セルに行を挿入しています。
「Range(“A3:B3”)」のセル範囲を変更すれば、指定範囲で挿入することができます。行全体ではなく範囲を指定して挿入する場合は、この方法を使えばOKですね。
複数行挿入
次に、複数行を一括で挿入する方法について解説します。
実行前:
サンプルコード:
Sub Test4() Range("3:5").Insert End Sub
実行後:
サンプルでは、3行目~5行目にに行を挿入しています。
「Range(“3:5”)」の行番号の範囲を変更すれば、指定した行数分挿入することができます。複数行を挿入する場合は、この方法を使えばOKですね。
変数を使った挿入
次に、変数を使った行の挿入方法について解説します。
実行前:
サンプルコード1:
Sub Test5() Dim intRow As Integer intRow = 5 Rows(intRow).Insert End Sub
サンプルコード2:
Sub Test6() Dim intRow As Integer Dim cel1 As String Dim cel2 As String intRow = 5 cel1 = "A" & intRow cel2 = "B" & intRow Range(cel1 & ":" & cel2).EntireRow.Insert End Sub
実行結果:
どちらも5行目に行を挿入する処理ですが、行数を変えたい場合に変数に入れている値を変えるだけで済むため、使い勝手がよくなるのでおすすめです!
なお、サンプルで紹介している「”A” & intRow」は文字列を結合して「”A5″」になるように書いていますが、文字列の結合方法は他にもいろいろあります。
興味がある方は以下も見てみてくださいね!
選択している行のすぐ下に挿入
次に、選択している行のすぐ下に挿入する方法について解説します。
実行前:
サンプルコード:
Sub Test7() Rows(ActiveCell.Row + 1).Insert End Sub
実行後:
選択している行は「ActiveCell.Row」で取得することができるので、「ActiveCell.Row + 1」で選択している行の下の行に挿入しています。
列を挿入する方法とは
ここまで行を挿入する方法を解説してきましたが、同じような方法で列も簡単に挿入することができます。
実行前:
サンプルコード1:
Sub Test8() Columns(2).Insert End Sub
サンプルコード2:
Sub Test9() Range("B1").EntireColumn.Insert End Sub
実行後:
列番号を指定する場合はRowsの部分をColumnsに変更し、セル名で挿入する場合も「EntireRow」を「EntireColumn」にするだけなので、覚えやすいですね。
このように、列も簡単に挿入することができます。
補足:合わせて覚えると便利な行コピー・削除方法
最後に、行の挿入とあわせて覚えておくと便利な行のコピー、削除方法について解説します。
行をコピーする場合は、Copyメソッドを使って次のように書きます。
実行前:
行コピーサンプルコード:
Sub Test10() Rows(2).Copy Destination:=Rows(10) End Sub
実行後:
行を削除する場合は、Deleteメソッドを使って次のように書きます。
実行前:
行削除サンプルコード:
Sub Test11() Rows(10).Delete End Sub
実行後:
行のコピー、削除どちらも簡単にできるので、合わせて覚えておくのがおすすめです!
以下で詳しく解説しているので、さらに知りたい方は見てみてくださいね!
まとめ
今回はVBAで行をコピーする方法について解説しました。
Excelで行の操作をするケースは多いので、行挿入、コピー、削除を合わせて覚えておくのがおすすめです!
どれも使い方は簡単なので、ぜひ使ってみてくださいね!