更新日:、 作成日:
VBA 行を挿入する
はじめに
Excel VBA マクロで行を挿入する方法を紹介します。
Rows(2).Insert または Range("A2").EntireRow.Insert メソッドから、行「2」に挿入できます。
先に Copy メソッドから行をコピーすると、コピーした行を挿入できます。
行を挿入する
Rows の引数に行番号を指定すると、その行に挿入できます。
行「2」に挿入するには Rows(2).Insert を入力します。
Rows(2).Insert

Range の引数にセル名を指定すると、そのセルを取得できます。EntireRow からその行を取得できます。
セル「B2」の行に挿入するには Range("B2").EntireRow.Insert を入力します。
Range("B2").EntireRow.Insert
コピーした行を挿入
コピーした行を挿入するには、先に Copy メソッドから行をコピーします。それから挿入します。
Rows(1).Copy ' 1 行目をコピー
Range("A1").EntireRow.Copy ' 1 行目をコピー
Rows(2).Insert ' 2 行目に挿入
Application.CutCopyMode = False ' コピーモードを解除
Application.CutCopyMode に False を設定しているのは、Copy メソッドを実行すると、そのセルがコピーモードになるためです。これを解除しています。

スポンサーリンク
複数行を挿入する
行の範囲「2 ~ 3」に挿入するには Range("2:3").Insert または Range("2:2", "3:3").Insert を入力します。
' 2 ~ 3 行目に挿入
Range("2:3").Insert
Range("2:2", "3:3").Insert
Range(Rows(2), Rows(3)).Insert
Range("A2:A3").EntireRow.Insert

コピーした行を挿入
Range("1:2").Copy ' 1 ~ 2 行目をコピー
Range("3:3").Insert
' 1 → 3 行目に挿入
' 2 → 4 行目に挿入
Range("1:1").Copy ' 1 行目をコピー
Range("3:4").Insert
' 1 → 3 行目に挿入
' 1 → 4 行目に挿入
Application.CutCopyMode = False ' コピーモードを解除
別シートの行に挿入する
シートを指定するには Worksheets の引数にシート名またはインデックスを指定します。
Sheet1 を指定するには Worksheets("Sheet1") または Worksheets(1) を入力します。

' Sheet1 の行に挿入
Worksheets("Sheet1").Rows(1).Insert
Worksheets(1).Rows(1).Insert
' Sheet2 の行に挿入
Worksheets("Sheet2").Rows(1).Insert
Worksheets(2).Rows(1).Insert
Sheet1 に Rows を入力すると、自身のシートの行になります。自身を表す Me. が省略されています。
' どちらも同じコード
Dim r As Range
Set r = Rows(1)
Set r = Me.Rows(1)
標準モジュールに Rows を入力すると、開いているシートの行になります。アクティブシートを表す ActiveSheet. が省略されています。
' どちらも同じコード
Dim r As Range
Set r = Rows(1)
Set r = ActiveSheet.Rows(1)
スポンサーリンク