VBA 行をクリアする

はじめに

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

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

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

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

行を指定して取得するには「行を取得する」をご覧ください。
列をクリアするには「列をクリアする」をご覧ください。
  • 目次
    • 行をクリアする
    • 複数行をクリアする
    • 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)