
目次
行挿入
VBAで行を挿入するには、Insertとすると行の挿入を行えます。
下記が行を挿入する際の基礎構文です。
Rows(挿入する行番号).Insert
例) 2行目の下に行を挿入する場合 ⇒ Rows(2).Insert
下記のサンプルコードはタイトルの画像の例のように、情報~と書いているセルの下にそれぞれ1行ずつ挿入していく例です。
サンプルコード
Sub 行追加()
Dim LastRow As Long, i As Long
'A列の最終行を取得する
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
'3行目から行挿入を行うと、行番号が変わってしまう為、最終行からループする
For i = LastRow To 3 Step -1
Rows(i).Insert
Next i
End Sub
実行結果
一行ずつ行を挿入することができました。

For文で上から1行ずつループしていくと、行を挿入するたびにずれが生じてくるため、『For i = LastRow To 3 Step -1』として、最終行から3行目までを逆からループしていく形にします。
もし、挿入する行が10000行など多くある場合は、For i = LastRow To 3 Step -1 ~ Next iまでの間に、『Application.StatusBar = i』と追加すると、進捗状況を表示できます。

サンプルコード
Sub 行追加()
Dim LastRow As Long, i As Long
'A列の最終行を取得する
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
'3行目から行挿入を行うと、行番号が変わってしまう為、最終行からループする
For i = LastRow To 3 Step -1
Rows(i).Insert
'進捗状況を表示します
Application.StatusBar = i
DoEvents
Next i
'最後に進捗状況の表示を終了させます
Application.StatusBar = False
End Sub
行削除
行の削除を行うにはRangeオブジェクトをDeleteとすると行の削除を行えます。 下記が行を削除する際の基礎構文です。
Rows(挿入する行番号).Delete
例) 2行目の行を削除する場合 ⇒ Rows(2).Delete
下記のサンプルコードは上記の行挿入で追加した行を逆に削除していく例です。
下記の例ではUnionを使用して、変数(rng)に削除する行を入れていき、最後にrng.Deleteで削除しています。
サンプルコード
Sub 行削除()
Dim rng As Range
Dim LastRow As Long, i As Long
'A列の最終行を取得する
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
'3行目から最終行までループさせる
For i = 3 To LastRow Step 2
'挿入する行をrngに格納していく
If rng Is Nothing Then
Set rng = Rows(i)
Else
Set rng = Union(rng, Rows(i))
End If
Next i
'rngに格納された行を全て削除します
rng.Delete
End Sub
実行結果
追加した行を削除することができました

Rangeオブジェクトの変数に入れ、最後に一気に行の削除をすることで処理が速くなります。
Rangeオブジェクトは最初Nothingになっているため、サンプルコードのように『If rng Is Nothing Then』として、
Nothingの場合は、Set rng = Rows(i)とし、Nothing出ない場合は、Set rng = Union(rng, Rows(i))として条件分岐をする必要があります。