こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。
皆さんは、VBAで列の挿入をする方法を知っていますか?
データの追加をする際に、列を挿入するケースはよくありますよね。
そこで今回は、
・列を挿入する方法
といった基礎的なことから、
・セル範囲を指定して列を挿入する方法
・複数列を指定して列を挿入する方法
・合わせて覚えると便利な列のコピー・削除方法
といった応用的な方法まで、徹底的に解説します!
列を挿入するためのInsertメソッドの使い方とは
はじめに、列を挿入する方法について簡単に解説します。
VBAで列を挿入する場合は、Insertメソッドを使って以下のように書いて使います。
使い方:
Columns(列番号).Insert '列番号を指定する場合 Range(セル名).EntireColumn.Insert 'セル名を指定する場合
「Columns(列番号).Insert」は列番号に入れた列に直接挿入します。
「Range(セル名).EntireColumn.Insert」は「Range(セル名).EntireColumn」で指定したセルの列数を取得してから、挿入します。
また、次のようにオプションを後ろに付けて挿入することもできます。
オプションを付けた場合:
Columns(列番号).Insert shift:=xlShiftToRight
shiftオプションは挿入後に移動するセルの移動方法を指定することができ、「xlShiftDown」で下に移動、「xlShiftToRight」で右に移動することができます。
このように、簡単に列を挿入することができます。
サンプルコード
次に、サンプルコードをもとに、具体的な使い方を解説します。
列を指定して1列挿入
はじめに、1列挿入する方法について解説します。
実行前:

サンプルコード1:
Sub Test1() Columns(3).Insert End Sub
サンプルコード2:
Sub Test1()
Range("C1").EntireColumn.Insert
End Sub
実行後:

サンプルコード1、2はどちらも同じ意味なので、直接列番号を指定する場合、セル名指定で指定する場合など用途に応じて使い分ければOKです。
セル範囲を指定して1列挿入
次に、セル範囲を指定して挿入する方法について解説します。
実行前:

サンプルコード:
Sub Test3()
Range("C1:C9").Insert
End Sub
実行後:

サンプルでは、C1~C9セルに列を挿入しています。
「Range("C1:C9")」のセル範囲を変更すれば、指定範囲で挿入することができます。
列全体ではなく範囲を指定して挿入する場合は、この方法を使えばOKですね。
複数列挿入
次に、複数列を一括で挿入する方法について解説します。
実行前:

サンプルコード:
Sub Test4()
Range("B:C").Insert
End Sub
実行後:

サンプルでは、B列目~C列目に列を挿入しています。
「Range("B:C")」の列番号の範囲を変更すれば、指定した列数分挿入することができます。
複数列を挿入する場合は、この方法を使えばOKですね。
変数を使った挿入
次に、変数を使った列の挿入方法について解説します。
実行前:

サンプルコード1:
Sub Test5() Dim intColumn As Integer intColumn = 2 Columns(intColumn).Insert End Sub
サンプルコード2:
Sub Test6() Dim intColumn As Integer Dim cel1 As String cel1 = "B1" Range(cel1).EntireColumn.Insert End Sub
実列結果:

どちらも2列目に列を挿入する処理ですが、このように変数を使えばより実用的な使い方ができるのでおすすめです!
選択している列のすぐ右に挿入
次に、選択している列のすぐ右に挿入する方法について解説します。
実行前:

サンプルコード:
Sub Test8() Columns(ActiveCell.Column + 1).Insert End Sub
実行後:

選択している列は「ActiveCell.Column」で取得することができるので、「ActiveCell.Column + 1」で選択している列の下の列に挿入しています。
行を挿入する方法とは
ここまで列を挿入する方法を解説してきましたが、同じような方法で行も簡単に挿入することができます。
実行前:

サンプルコード1:
Sub Tes9() Rows(2).Insert End Sub
サンプルコード2:
Sub Test10()
Range("A2").EntireRow.Insert
End Sub
実行後:

行番号を指定する場合はColumnsの部分をRowsに変更し、セル名で挿入する場合も「EntireColumn」を「EntireRow」にするだけなので、覚えやすいですね。
このように、行も簡単に挿入することができます。
補足:合わせて覚えると便利な列コピー・削除方法
最後に、列の挿入とあわせて覚えておくと便利な列コピー、削除方法について解説します。
列をコピーする場合は、Copyメソッドを使って次のように書きます。
実行前:

列コピーサンプルコード:
Sub Test11() Columns(2).Copy Destination:=Columns(4) End Sub
実行後:

列を削除する場合は、Deleteメソッドを使って次のように書きます。
実行前:

列削除サンプルコード:
Sub Test12() Columns(4).Delete End Sub
実行後:

コピー、削除どちらも簡単にできるので合わせて覚えておくのがおすすめです!
以下で詳しく解説しているので、さらに知りたい方は見てみてくださいね!
まとめ
今回は、VBAで列を挿入する方法について徹底的に解説しました。
Excelで列の操作をするケースは多いので、列挿入、コピー、削除まで覚えておくのがおすすめです!
どれも使い方は簡単なので、ぜひ使ってみてくださいね!






