更新日:、 作成日:

VBA 列をクリアする

はじめに

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

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

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

ResizeOffset メソッドから、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)