更新日:、 作成日:

VBA 行をクリアする

はじめに

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

Rows(2).Clear または Range("A2").EntireRow.Clear メソッドから、行「2」をクリアできます。

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

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

行を指定して取得するには「行を取得する」をご覧ください。
列をクリアするには「列をクリアする」をご覧ください。

行をクリアする

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

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

Rows の引数に行番号を指定すると、その行をクリアできます。

行「2」をクリアするには Rows(2).Clear を入力します。

Rows(2).Clear         ' 2 行目のすべてをクリア
Rows(2).ClearContents ' 2 行目の値をクリア
1

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

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

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

複数行をクリアする

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

' 2 ~ 3 行目をクリア
Range("2:3").Clear
Range("2:2", "3:3").Clear
Range(Rows(2), Rows(3)).Clear
Range("A2:A3").EntireRow.Clear
2

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

Cells.Clear

2 行目以降をクリアする

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

Dim c As Range
Set c = Range("1:10") ' セルの範囲
c.Resize(RowSize:=c.Rows.Count - 1).Offset(1, 0).Clear ' 2 ~ 10 行目をクリア

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

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

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

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

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

c.Resize(RowSize:=c.Rows.Count - 2).Offset(2, 0).Clear ' 3 行目以降をクリア

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

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

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

sheet1
' Sheet1 の行をクリア
Worksheets("Sheet1").Rows(1).Clear
Worksheets(1).Rows(1).Clear

' Sheet2 の行をクリア
Worksheets("Sheet2").Rows(1).Clear
Worksheets(2).Rows(1).Clear

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

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

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

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