行を挿入するマクロ

行を挿入するマクロ
行を挿入

表を作成していて後から、1行抜けていたとか、1つセル足りないと気づいたときに使うマクロを作成します。

RangeオブジェクトにInsertメソッド セルや行を挿入する マクロ講座22回

セルや行を挿入するマクロ

エクセルで表を作成してから、1行抜けていたとか、1つセルがずれていたというようなことがあるかもしれません。 そんな時には、必要な数の行を挿入したり、セルを挿入したりする必要があります。 今日のメニューは、マクロの記録で必要なマクロを作成することです。
(1)1行を挿入するマクロ、(2)2行を挿入するマクロ、(3)セルを挿入するマクロ
の3つを記録マクロで作ります。その後、コードの解説予定となっています。
(サンプルファイルは、こちらから マクロ講座22回サンプルデータ

マクロの記録の手順

行を挿入するマクロの記録をしてみましょう。
さあ、今日もおきまりの実習ですよ。
(1)マクロの記録を開始、
(2)B3:C4のセル範囲を選択し、
  [挿入]メニューから[行]を実行します。
(3)選択した2行分の行が挿入されます。
マクロの記録を終了します。Excel2013で記録マクロを作成する手順は以下の動画をご覧ください。

行を2行挿入するマクロを記録する

今回はステータスバーから(1)マクロの記録を開始しましょう。
(2)マクロの記録ダイアログが表示されます。OKをクリックして開始します。
B3:C4のセル範囲を選択し、リボンのホームタブにあるセルグループから挿入ボタンの?▼を押し下げて
シートの行を挿入を実行します。
(3)選択した2行分の行が挿入されます。 マクロの記録を終了します。
記録されたマクロのコードです。選択範囲は2行分ですが、コードは、Selectionに対して、Insertメソッドを使っています。

行を1行挿入するマクロを記録する

同様に、1行挿入するマクロの記録をしましょう。
(1)マクロの記録を開始
(2)B3セルだけを選択し、[挿入]ボタンから[シートの行を挿入]を実行します。
1行挿入されていますマクロの記録を終了します。。
1行挿入のマクロをVBEで表示したところです。Range("B3")に対してInsertメソッドを使っています。
作成した2行分の行を挿入するマクロを見てみましょう。
Sub Macro2()
    Range("B3:C4").Select
    Selection.EntireRow.Insert
End Sub
と記録されていますが、汎用的に使うコードとしては、Range("B3:C4").Selectは、なくても先に範囲を選択しておけば、必要な行が挿入されます。

Selection.EntireRow.Insert

コードの説明です。

Range("B3:C4").Select

       B3:C4の2行選択しています。 

Selection.EntireRow.Insert

     Selectionの行全体に空白行を挿入します。

EntireRowは、対象のRangeオブジェクトを含む行全体を表すプロパティです。

もし、1行挿入したいのであれば、選択するのは、1行分のセルだけでいいことになります。
SelectionActiveCellに変えても、1行挿入することができます。  
汎用的に行を挿入するマクロコードは、以下のようになります。
Sub 行挿入マクロ()
    '先に行を選択しておくこと
    Selection.EntireRow.Insert
End Sub    

選択せずに指定した行を挿入

5、6行に新規で行を挿入したいとき、以下のように書くことができます。
Sub 行挿入マクロ2()
    Range("5:6").Insert
End Sub    
Sub 行挿入マクロ3()
    Rows(5).EntireRow.Insert
    Rows(6).EntireRow.Insert
End Sub    

ActiveCellの1行下に表を追加したい時

ActiveCellの1行下に行挿入をする場合は、Offsetプロパティを使い次のように記述します。
Sub 行挿入マクロ4()
	ActiveCell.Offset(1, 0) .EntireRow.Insert
End Sub

選択せずに指定した列を挿入

C列、B列に列を挿入したい場合は、次のように記述します。
Sub 列挿入()
    Columns("C").EntireColumn.Insert
    Columns("B").EntireColumn.Insert
End Sub
ActiveCellの位置に列を挿入したい場合は、次のように記述します。
Sub 列挿入2()
    ActiveCell.EntireColumn.Insert
End Sub

こちらもおすすめ