更新日:、 作成日:
VBA 列をクリアする
はじめに
Excel VBA マクロで列をクリアする方法を紹介します。
Columns(2).Clear または Range("B1").EntireColumn.Clear メソッドから、列「B」をクリアできます。
ClearContents メソッドから、値と数式を削除できます。書式などは残ります。
Resize と Offset メソッドから、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 列目の値をクリア
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
シート全体のセルをクリアするには 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 の列をクリア
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)
スポンサーリンク