VBA 列を挿入する

はじめに

Excel VBA マクロの列を挿入する方法を紹介します。

Columns(2).Insert または Range("B1").EntireColumn.Insert メソッドから、列「B」に挿入できます。

先に Copy メソッドから列をコピーすると、コピーした列を挿入できます。

列をコピーするには「列をコピーして貼り付ける」をご覧ください。
列を指定して取得するには「列を取得する」をご覧ください。
  • 目次
    • 列を挿入する
    • 複数列を挿入する
    • 別シートの列に挿入する

列を挿入する

Columns の引数に列番号または列名を指定すると、その列に挿入できます。

列「A」に挿入するには Columns(1).Insert または Columns("A").Insert を入力します。

Columns(1).Insert   ' A 列に挿入
Columns("A").Insert ' A 列に挿入
' Columns(3).Insert ' C 列に挿入
1

Range の引数にセル名を指定すると、そのセルを取得できます。EntireColumn からその列を取得できます。

セル「B2」の列に挿入するには Range("B2").EntireColumn.Insert を入力します。

Range("B2").EntireColumn.Insert

コピーした列を挿入

コピーした列を挿入するには、先に Copy メソッドから列をコピーします。それから挿入します。

Columns(1).Copy               ' A 列をコピー
Range("A1").EntireColumn.Copy ' A 列をコピー

Columns(2).Insert             ' B 列に挿入
Application.CutCopyMode = False ' コピーモードを解除

Application.CutCopyMode に False を設定しているのは、Copy メソッドを実行すると、そのセルがコピーモードになるためです。これを解除しています。

2

複数列を挿入する

列の範囲「B ~ C」に挿入するには Range("B:C").Insert または Range("B:B", "C:C").Insert を入力します。

' B ~ C 列に挿入
Range("B:C").Insert
Range("B:B", "C:C").Insert
Range(Columns(2), Columns(3)).Insert
Range("B1:C1").EntireColumn.Insert
2

コピーした列を挿入

Range("A:B").Copy ' A ~ B 列をコピー
Range("C:C").Insert 
' A → C 列に挿入
' B → D 列に挿入

Range("A:A").Copy ' A 列をコピー
Range("C:D").Insert
' A → C 列に挿入
' A → C 列に挿入

Application.CutCopyMode = False ' コピーモードを解除

別シートの列に挿入する

シートを指定するには Worksheets の引数にシート名またはインデックスを指定します。

Sheet1 を指定するには Worksheets("Sheet1") または Worksheets(1) を入力します。

sheet1
' Sheet1 の列に挿入
Worksheets("Sheet1").Columns(1).Insert
Worksheets(1).Columns(1).Insert

' Sheet2 の列に挿入
Worksheets("Sheet2").Columns(1).Insert
Worksheets(2).Columns(1).Insert

Sheet1 に Columns を入力すると、自身のシートの列になります。自身を表す Me. が省略されています。

' どちらも同じコード
Dim r As Range
Set r = Columns(1)
Set r = Me.Columns(1)

標準モジュールに Columns を入力すると、開いているシートの列になります。アクティブシートを表す ActiveSheet. が省略されています。

' どちらも同じコード
Dim r As Range
Set r = Columns(1)
Set r = ActiveSheet.Columns(1)