VBA 列を削除する

はじめに

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

Columns(2).Delete または Range("B1").EntireColumn.Delete メソッドから、列「B」を削除できます。

列を指定して取得するには「列を取得する」をご覧ください。
行を削除するには「行を削除する」をご覧ください。
  • 目次
    • 列を削除する
    • 複数列を削除する
    • Delete と Clear の違い
    • 別シートの列を削除する

列を削除する

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

列「B」を削除するには Columns(2).Delete または Columns("B").Delete を入力します。

Columns(2).Delete
Columns("B").Delete
1

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

セル「B1」の列を削除するには Range("B1").EntireColumn.Delete を入力します。

Range("B1").EntireColumn.Delete

複数列を削除する

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

' B ~ C 列を削除
Range("B:C").Delete
Range("B:B", "C:C").Delete
Range(Columns(2), Columns(3)).Delete
Range("B1:C1").EntireColumn.Delete
2

Delete と Clear の違い

Delete 以外に Clear メソッドからも列をクリアできます。

詳しくは「列をクリアする」をご覧ください。
Range("B:B").Delete ' 削除
Range("B:B").Clear  ' クリア
  • Delete:列そのものを削除し、左に移動する。
  • Clear:列は残して、すべての値や書式をクリアする。
1 3

削除後に列を移動するときは Delete を使用し、列はそのまま残したいときは Clear を使用します。

別シートの列を削除する

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

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

sheet1
' Sheet1 の列を削除
Worksheets("Sheet1").Columns(1).Delete
Worksheets(1).Columns(1).Delete

' Sheet2 の列を削除
Worksheets("Sheet2").Columns(1).Delete
Worksheets(2).Columns(1).Delete

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)