VBA 列をクリアする

はじめに

Excel VBA マクロで列をクリアする方法を紹介します。

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

ClearContents メソッドから、値と数式を削除できます。書式などは残ります。

ResizeOffset メソッドから、2 列目以降をクリアできます。

列を指定して取得するには「列を取得する」をご覧ください。
行をクリアするには「行をクリアする」をご覧ください。
  • 目次
    • 列をクリアする
    • 複数列をクリアする
    • 2 列目以降をクリアする
    • 別シートの列をクリアする

列をクリアする

列をクリアするメソッドはいくつもあります。クリアする目的にあったものを使用します。

メソッド名 クリアするもの
Clearすべて
ClearCommentsコメント
ClearContents値と数式
ClearFormats書式 (色や罫線、条件付き書式など)
ClearNotesコメント
ClearOutlineアウトライン
ClearHyperlinks
(Excel 2010 以降)
ハイパーリンク

Columns の引数に列番号や列名を指定すると、その列をクリアできます。

列「B」をクリアするには Columns(2).Clear または Columns("B").Clear を入力します。

Columns(2).Clear           ' B 列のすべてをクリア
Columns("B").ClearContents ' 2 列目の値をクリア
1

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

セル「A1」の列をクリアするには Range("A1").EntireColumn.Clear を入力します。

Range("A1").EntireColumn.Clear
Range("A1").EntireColumn.ClearFormats ' A1 の列の書式をクリア

複数列をクリアする

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

' B ~ C 列をクリア
Range("B:C").Clear
Range("B:B", "C:C").Clear
Range(Columns(2), Columns(3)).Clear
Range("B1:C1").EntireColumn.Clear
2

シート全体のセルをクリアするには Cells.Crear を入力します。

Cells.Clear

2 列目以降をクリアする

1 列目の見出しを残して 2 列目以降をクリアするには次のように入力します。

Dim c As Range
Set c = Range("A:G") ' セルの範囲
c.Resize(ColumnSize:=c.Columns.Count - 1).Offset(0, 1).Clear ' B ~ G 列をクリア

Set c = Cells ' シート全体
c.Resize(ColumnSize:=c.Columns.Count - 1).Offset(0, 1).Clear ' 2 列目以降をクリア

複数列やシート全体の 2 列目以降をクリアできます。

Resize メソッドから、その範囲の列数を 1 減らしています。

Offset メソッドから、その範囲を 1 列右にずらして 2 列目以降の範囲を取得しています。

1 の値を 2 箇所変更して指定した列以降をクリアできます。

c.Resize(ColumnSize:=c.Columns.Count - 2).Offset(0, 2).Clear ' 3 列目以降をクリア

別シートの列をクリアする

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

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

sheet1
' Sheet1 の列をクリア
Worksheets("Sheet1").Columns(1).Clear
Worksheets(1).Columns(1).Clear

' Sheet2 の列をクリア
Worksheets("Sheet2").Columns(1).Clear
Worksheets(2).Columns(1).Clear

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)