【VBA】行を挿入(追加)する

VBAで行を挿入(追加)する時は、Insertメソッドを使用します。

挿入位置の指定方法は、RowsやEntireRowなどがあるので、それぞれ紹介しています。でも特に理由がない場合は、わかりやすいRowsによる指定をしましょう。

1行挿入する

サンプルソースでは、2行目に行を追加します。

方法1. Rowsを使った行の挿入

Rows(行番号).Insert

引数の「行番号」は、挿入したい行の位置です。

Insertメソッドによって、指定した位置に1行追加されます。

 

コード

 

解説

Rows(2)が2行目を意味します。

その行に対してInsertメソッドを実行しているので、2行目に行が挿入されます。

 

方法2. EntireRowを使った行の挿入

Range(“セル番地”).EntireRow.Insert

セル番地には、A2などセルの場所を設定します。(Rowsの行番号と違い、セル番地はダブルクォーテーションで囲みます)

EntireRowで指定されたセルの行を取得し、Insertメソッドで取得した行の位置に新しい行が挿入されます。

セルから挿入位置の行を取得しているので、A2でもB2でも行が同じセルを指定すれば、同じ位置に行が挿入されます。

 

コード

 

解説

プログラムの意味は、次のようになります。

  1. Range(“A2″)で、A2セルを指定
  2. EntireRowは行を返すので、2行目を返す
  3. Insertで、2行目に新しい行が挿入される

 

複数行を挿入する

サンプルソースでは、2~4行目に3行を追加します。

方法1. Rowsを使った複数行の挿入

Rows(“開始行番号:終了行番号”).Insert

引数で、挿入したい行の開始位置と終了位置を指定します。

Insertメソッドによって、指定した範囲に行が追加されます。

1行挿入の時と違い、複数行の時はダブルクォーテーションで囲みます!

コード

 

解説

Rows(“2:4”)が2~4行目を意味します。

その範囲に対してInsertメソッドが行を追加するので、結果3行が挿入されます。

 

方法2. EntireRowを使った複数行の挿入

Range(“開始セル番地:終了セル番地”).EntireRow.Insert

引数で、挿入したい行の開始セル番地と終了セル番地を指定します。

EntireRowで指定されたセルの行範囲を取得し、Insertメソッドで取得した行範囲に新しい行が挿入されます。

 

コード

 

解説

プログラムの意味は、次のようになります。

  1. Range(“A2:A4″)で、A2~A4セルを指定
  2. EntireRowは行を返すので、2行目~4行目を返す
  3. Insertで、2行目~4行目に新しい行が挿入される

 

コピーした行を挿入する

サンプルソースでは、1行目をコピーし、2行目に追加します。

方法1. Rowsを使った複数行の挿入

Rows(コピー行番号).Copy

Rows(挿入行番号).Insert

Rowsでコピー元の行番号を指定し、Copyメソッドでコピーします。

その後、Rowsで挿入先の行番号を指定し、Insertメソッドによってコピーした行が挿入されます。

実行後、コピー元の行が選択状態になります。

解除したい場合は、行を挿入後に

Application.CutCopyMode = False

をコーディングすればOKです

 

コード

 

解説

Rows(1).Copyで、1行目をコピーします。

Rows(2).Insertで、コピーした行を2行目に挿入します。(ここまででコピーと挿入は完了です。)

実行後、1行目がコピー状態(選択された状態)になってるのがイヤなので、Application.CutCopyMode = False で解除しています。

 

行挿入その他のポイント

挿入行の書式:上、下から引き継ぐ。引き継がない。

上の行、下の行どちらの書式を引き継いで行挿入するかは、CopyOriginで指定できます。

どちらからも引き継がない指定はできません。なので、その場合は行挿入後に、ClearFormatsメソッドで書式をクリアします。

コードで特に記述してない場合は、上の行の書式が引き継がれます。

行挿入時の書式設定

xlFormatFromLeftOrAbove 上の行の書式
xlFormatFromRightOrBelow 下の行の書式

xlFormatFromRightOrBelowで指定している「下の行」は、行挿入後に、挿入した行の下にある行です。

なので、実行前(プログラミングしている時)は「下の行の書式」と言うよりは、「挿入位置にある行の書式」と理解してコーディングしましょう。

コード

 

別シートに行を挿入する

別のシートに行を挿入する場合は、RowsやRangeの前に、WorkSheetsの引数で指定します。

WorkSheetsの引数では、シート名かインデックスで指定できます。

でも、特に理由がない場合は、確実なシート名で指定しましょう!

コード

 

 

関連記事

VBAテクニック辞典
成果を出す5つのポイント
VBAテクニック辞典
えくとしょ | 初心者のためのエクセルとVBAの図書館
タイトルとURLをコピーしました