VBAで行を挿入(追加)する時は、Insertメソッドを使用します。
挿入位置の指定方法は、RowsやEntireRowなどがあるので、それぞれ紹介しています。でも特に理由がない場合は、わかりやすいRowsによる指定をしましょう。
1行挿入する
サンプルソースでは、2行目に行を追加します。
方法1. Rowsを使った行の挿入
Rows(行番号).Insert
引数の「行番号」は、挿入したい行の位置です。
Insertメソッドによって、指定した位置に1行追加されます。
コード
1 2 3 |
Rows(2).Insert '2行目に行を挿入 |
解説
Rows(2)が2行目を意味します。
その行に対してInsertメソッドを実行しているので、2行目に行が挿入されます。
方法2. EntireRowを使った行の挿入
Range(“セル番地”).EntireRow.Insert
セル番地には、A2などセルの場所を設定します。(Rowsの行番号と違い、セル番地はダブルクォーテーションで囲みます)
EntireRowで指定されたセルの行を取得し、Insertメソッドで取得した行の位置に新しい行が挿入されます。
セルから挿入位置の行を取得しているので、A2でもB2でも行が同じセルを指定すれば、同じ位置に行が挿入されます。
コード
1 2 3 |
Range("A2").EntireRow.Insert '2行目に行を挿入 |
解説
プログラムの意味は、次のようになります。
- Range(“A2″)で、A2セルを指定
- EntireRowは行を返すので、2行目を返す
- Insertで、2行目に新しい行が挿入される
複数行を挿入する
サンプルソースでは、2~4行目に3行を追加します。
方法1. Rowsを使った複数行の挿入
Rows(“開始行番号:終了行番号”).Insert
引数で、挿入したい行の開始位置と終了位置を指定します。
Insertメソッドによって、指定した範囲に行が追加されます。
1行挿入の時と違い、複数行の時はダブルクォーテーションで囲みます!
コード
1 2 3 |
Rows("2:4").Insert '2~4行目に行を挿入 |
解説
Rows(“2:4”)が2~4行目を意味します。
その範囲に対してInsertメソッドが行を追加するので、結果3行が挿入されます。
方法2. EntireRowを使った複数行の挿入
Range(“開始セル番地:終了セル番地”).EntireRow.Insert
引数で、挿入したい行の開始セル番地と終了セル番地を指定します。
EntireRowで指定されたセルの行範囲を取得し、Insertメソッドで取得した行範囲に新しい行が挿入されます。
コード
1 2 3 |
Range("A2:A4").EntireRow.Insert '2~4行目に行を挿入 |
解説
プログラムの意味は、次のようになります。
- Range(“A2:A4″)で、A2~A4セルを指定
- EntireRowは行を返すので、2行目~4行目を返す
- Insertで、2行目~4行目に新しい行が挿入される
コピーした行を挿入する
サンプルソースでは、1行目をコピーし、2行目に追加します。
方法1. Rowsを使った複数行の挿入
Rows(コピー行番号).Copy
Rows(挿入行番号).Insert
Rowsでコピー元の行番号を指定し、Copyメソッドでコピーします。
その後、Rowsで挿入先の行番号を指定し、Insertメソッドによってコピーした行が挿入されます。
実行後、コピー元の行が選択状態になります。
解除したい場合は、行を挿入後に
Application.CutCopyMode = False
をコーディングすればOKです
コード
1 2 3 4 5 6 |
Rows(1).Copy '1行目をコピー Rows(2).Insert '2行目にコピーした行を挿入 Application.CutCopyMode = False '1行目のコピー状態を解除 |
解説
Rows(1).Copyで、1行目をコピーします。
Rows(2).Insertで、コピーした行を2行目に挿入します。(ここまででコピーと挿入は完了です。)
実行後、1行目がコピー状態(選択された状態)になってるのがイヤなので、Application.CutCopyMode = False で解除しています。
行挿入その他のポイント
挿入行の書式:上、下から引き継ぐ。引き継がない。
上の行、下の行どちらの書式を引き継いで行挿入するかは、CopyOriginで指定できます。
どちらからも引き継がない指定はできません。なので、その場合は行挿入後に、ClearFormatsメソッドで書式をクリアします。
コードで特に記述してない場合は、上の行の書式が引き継がれます。
行挿入時の書式設定
xlFormatFromLeftOrAbove | 上の行の書式 |
---|---|
xlFormatFromRightOrBelow | 下の行の書式 |
xlFormatFromRightOrBelowで指定している「下の行」は、行挿入後に、挿入した行の下にある行です。
なので、実行前(プログラミングしている時)は「下の行の書式」と言うよりは、「挿入位置にある行の書式」と理解してコーディングしましょう。
コード
1 2 3 4 5 6 7 8 |
Rows(2).Insert CopyOrigin:=xlFormatFromLeftOrAbove '上の行の書式を引き継ぐ Rows(2).Insert CopyOrigin:=xlFormatFromRightOrBelow '下の行の書式を引き継ぐ Rows(2).Insert Rows(2).ClearFormats '書式をクリアする |
別シートに行を挿入する
別のシートに行を挿入する場合は、RowsやRangeの前に、WorkSheetsの引数で指定します。
WorkSheetsの引数では、シート名かインデックスで指定できます。
でも、特に理由がない場合は、確実なシート名で指定しましょう!
コード
1 2 3 4 5 |
Worksheets("Sheet3").Rows(2).Insert 'Sheet3の2行目に行を挿入 Worksheets("Sheet3").Range("A2").EntireRow.Insert 'Sheet3の2行目に行を挿入 |