エクセルを使用する中でよく利用する行の挿入・列の挿入・行の削除・列の削除ですが
VBAを使用しても同様の操作を行うことができます
行・列の挿入は項目が増えた際に行を増やしたり、
データの並び替えの際に使用できますよね。
さらにデータを蓄積していくファイルでも役に立つと思います。
複数挿入・削除や指定範囲の挿入・削除など様々なパターンを説明してますので
ぜひ参考にしてみてください。
それでは見ていきましょう。
■忙しい人向けのコピペ用プログラム
・行の挿入
Rows(挿入したい行番号).Insert
・行の削除
Rows(削除したい行番号).Delete
・列の挿入
Columns(挿入したい列番号).Insert
・列の削除
Columns(挿入したい列番号).Delete
■行の挿入・削除を行う
・指定した行に挿入を行う
まずは指定した行に挿入をしていきましょう。
説明用に下記のような表を用意しました。こちらに挿入を行いたいと思います。

例として3行目に行の挿入を行いたいと思います。
VBAのプログラムで表すとこのようになります。
Rows(3).Insert
Rows(3):3行目の行を対象とする
Insert:挿入を行う
では実際に打ち込んでみましょう。

Sub 行の挿入()
Rows(3).Insert
End Sub
こちらを実行すると下図のようになります。

3行目に新しく行が挿入されました
ちなみにRowsのかっこ内は変数でも機能してくれます。
・指定した範囲に行の挿入を行う
今度は指定した範囲で行の挿入を行ってみたいと思います。
行の挿入では「Rows」を使用しましたが、範囲を指定する際は「Range」を使用します。
今回は「C3からE3」に行の挿入を行ってみたいと思います。
VBAのプログラムで表すとこのようになります。
Range(指定範囲).Insert
今回は「C3からE3」なのでこのようになります。
Range(“C3:E3“).Insert
では実際に打ち込んでみましょう。

こちらを実行すると…

うまく挿入できていますね。変数を使用するのであればCellsを活用すれば
指定範囲を変数を使用しても挿入できるようになります。
・複数の行を挿入する
通常の挿入でも複数の行の挿入はできますがVBAでも可能です。
行挿入で複数行挿入する際は「Rows」でも「Range」でもどちらでも構いません
では見本で3行目から6行目まで行挿入を行ってみたいと思います。
プログラムではこのようになります。

Sub 行の挿入()
Rows(“3:6“).Insert
End Sub
では実行してみましょう。

3行目から6行目まで行を挿入できました。
・行の削除を行う
先ほどまで行の挿入について説明しましたが
行の削除について説明していきたいと思います。
挿入では「Insert」でしたが削除は「Delete」を使用します。
下記のデータを参考にしてみてみます。

では「4行目」を削除してみましょう。
プログラムではこのようになります。

Sub 行の削除()
Rows(4).Delete
End Sub
実行するとこのようになります。

4行目を削除することができました。
複数行や指定範囲の行を削除する場合は挿入で使用した方法で
「Insert」から「Delete」に変更すれば対応できます。
■列の挿入・削除を行う
・指定した列に挿入を行う
先ほどは行に挿入を説明しましたが次は列の挿入をしていきましょう。
今回も下記のデータをもとに説明していきたいと思います。

今回はD行に挿入をしてみたいと思います。
VBAのプログラムで表すとこのようになります。
Columns(4).Insert
Columns(4):4列目(D列)の列を対象とする
Insert:挿入を行う
DはAから数えると「4」番目なのでColumns(4)となります。
では実際に打ち込んでみましょう。

Sub 列の挿入()
Columns(4).Insert
End Sub
実行すると..

D行に列を挿入することができました。
ちなみにこちらも変数を使用することが可能です。
・指定した範囲に行の挿入を行う
今度は指定した範囲に行の挿入を行ってみたいと思います。
今回は「E3からF3」に列の挿入をしてみましょう。
範囲を指定する際は「Range」または「Cells」を活用してください。
プログラムにするとこのようになります。
Range(“E3:F3“).Insert SHIFT:=xlShiftToRight
「 SHIFT:=xlShiftToRight」は右方向へ挿入します。
では入力してみましょう。

実行するとこのようになります。

指定した範囲分、挿入することができました。
・複数の列を挿入する
今度は複数の列を挿入してみましょう。
見本で「D・E・F」列に挿入してみましょう。
プログラムはこのようになります。

Sub 列の挿入()
Range(“D:F“).Insert
End Sub
それでは実行してみましょう。

複数行挿入できましたね。
・列の削除を行う
列の削除も見てみましょう。
仕組みは行の削除と同様です。
「Insert」を「Delete」に変更します。
では下図のD列を削除してみましょう。

プログラムはこのようになります。

Sub 列の削除()
Columns(4).Delete
End Sub
実行するとこうなります。

D列を削除することができました。
■行・列の挿入削除の方向を指示する
行や列を範囲を指定して挿入・削除する際に
通常、列か行で選択範囲が小さい方に挿入されます
例えば「B4:B8」で挿入すると行は1行で列は4列あるので行方向に挿入されますし、
「B4:E4」であれば行は4行で列は1行なので列方向に挿入されます。
しかし、作りたいプログラムが必ずしもそうとは限りませんよね。
なのでその際は挿入削除方向を指示しないといけません。
一覧を下記に示します。
・挿入を行方向にする SHIFT:=xlShiftDown

Range(“D4”).Insert SHIFT:=xlShiftDown
・挿入を列方向にする SHIFT:=xlShiftToRight

Range(“D4”).Insert SHIFT:=xlShiftToRight
・削除を行方向にする SHIFT:=xlShiftUp

Range(“D4”).Delete SHIFT:=xlShiftUp
・挿入を列方向にする SHIFT:=xlShiftToLeft

Range(“D4”).Delete SHIFT:=xlShiftToLeft
SHIFTで列・行方向への挿入・削除が選べるようになりました。
これで様々なパターンにも対応できますね。
■変数を活用する
では変数の活用方法を見ていきましょう。
先ほどまでは列番号や行番号を活用しました。
この行・列番号は変数でも代用が可能です。
では下記ソースコードを見ていきましょう。
Sub 行の挿入() Dim n As Long n = 5 'ここに挿入したい行番号を入力 Rows(n).Insert End Sub
見本では変数nに「5」を格納していますね。
そこに「Rows(n).Insert」で変数「n」を行番号と応用することで
5行目に行を挿入することが可能です。
■繰り返し動作
繰り返し動作で複数回挿入や削除することも可能です。
下記ソースコードをご参照ください。
Sub 行の挿入() Dim n As Long For n = 1 To 5 Step 1 Rows(3).Insert Next n End Sub
For Nextを活用することで繰り返し「3行目」に行の挿入をしています。
1から5回繰り返すので5回行の挿入をすることになります。
⬛︎公式の説明
わかりやすいように説明したため公式と使用する語句が異なりますが
マイクロソフト公式の説明については下記のリンクを参照してください☟
Range.Insert メソッド (Excel) | Microsoft Learn
Range.Delete メソッド (Excel) | Microsoft Learn
■まとめ
いかがだったでしょうか。
行・列の基本的な挿入・削除の流れが分かったと思います。
さらに行・列方向のどちらに挿入・削除が理解できれば複雑なシステムも作成できるようになります。
ぜひ参考にしてみてください。
次回の記事ではブック操作についてまとめています。
【マクロVBA知識 16】ブックを開く・作成・名前の変更・フォルダの移動・保存・閉じる ► 独学エクセル塾 (dokugakuexcel.com)
それでは次回の記事でお会いしましょう。