Excelマクロ・VBA セル(行・列)のクリア

Excelのマクロ・VBAによるセル(行・列)のクリア方法を紹介します。

解説

RangeまたはCellsに対してClear系メソッドを利用して操作します。

用途に合わせてクリアする対象を選びます。

メソッド名クリア対象
Clear全て
ClearCommentsコメント
ClearContents値と数式
ClearFormats書式 (色や罫線、条件付き書式など)
ClearNotesコメント
ClearOutlineアウトライン
ClearHyperlinksハイパーリンク
Clear系メソッド一覧

セルをクリア

対象をセルアドレスで指定(Range)

単独のセル

Range(“セルアドレス")に対してClear系メソッドを使用します。(赤字は適宜変更

Range("セルアドレス").Clear

Worksheets(“シート名")を利用すると対象シートも指定します。

シートを指定しない場合はアクティブシートのセルが対象になります。

Worksheets(インデックス) の場合は最も左のシートを1とした連番を指定します。

以下コード例です。

' アクティブシートのA1セルを削除して左にシフト
Range("A1").Clear
' Sheet1のB1セルをクリア
Worksheets("Sheet1").Range("B1").Clear
' 最も左にあるシートのA2セルをクリア。1つ数字を増やすと1つ右のシート
Worksheets(1).Range("A2").Clear
セル範囲

Rangeでセル範囲を指定してClear系メソッドを利用すると範囲に対して削除を行います。

Range("セル範囲のアドレス").Clear

省略していますが、 Worksheets指定も可能です。

以下コード例です。

' A1~C3の値をクリア
Range("A1:C3").Clear
' A1~C3の値をクリア
Range("A1", "C3").Clear
' 離れた範囲A1~C3とE10~H15の値をクリア
Range("A1:C3,E10:H15").Clear

対象を行数・列数で指定(Cells)

Cells(行数,列数)に対してClear系メソッドを使用します。

Cells(行数,列数).Clear

Worksheets(“シート名")を利用すると対象シートも指定します。

シートを指定しない場合はアクティブシートのセルが対象になります。

Worksheets(インデックス) の場合は最も左のシートを1とした連番を指定します。

以下コード例です。

' アクティブシートのA1セルをクリア
Cells(1,1).Clear
' Sheet1のB1セルをクリア
Worksheets("Sheet1").Cells(1,2).Clear
' 最も左にあるシートのA2セルをクリア
Worksheets(1).Cells(2,1).Clear

行をクリア

単独行

Rowsに対してClear系メソッドを使用します。

Rows(行数).Clear

または Range(“セルアドレス").EntireRowに対してClear系メソッドを使用します。

このセルアドレスは行が合っていれば、どの列でも構いません。

Range("セルアドレス").EntireRow.Clear

RowsとRangeはどちらを利用しても構いませんが、

行は常に数値で指定するためRowsの方が扱いやすいでしょう。

なおWorksheets(“シート名")を利用すると対象シートも指定します。

シートを指定しない場合はアクティブシートのセルが対象になります。

Worksheets(インデックス) の場合は最も左のシートを1とした連番を指定します。

' アクティブシートの1行目をクリア
Rows(1).Clear
' アクティブシートの1行目をクリア
Range("A1").EntireRow.Clear
' Sheet1の1行目をクリア
Worksheets("Sheet1").Rows(1).Clear
' 最も左にあるシートの1行目をクリア。1つ数字を増やすと1つ右のシート
Worksheets(1).Range("A1").EntireRow.Clear

複数行

Rangeで複数行を指定してClear系メソッドを利用すると複数行に対してクリアを行います。

Range("セル範囲のアドレス").Clear

以下コード例です。

' アクティブシートの1~3行目をクリア
Range("1:3").Clear
Rows("1:3").Clear
' Sheet1の1~3行目をクリア
Worksheets("Sheet1").Range("1:3").Clear
' 最も左にあるシートの1~3行目をクリア。1つ数字を増やすと1つ右のシート
Worksheets(1).Range("1:3").Clear

列をクリア

単独列

Columnsに対してClear系メソッドを使用します。

Columns(列数).Clear
Columns().Clear

またはRange(“セルアドレス“).EntireColumnに対してClear系メソッドを使用します。

このセルアドレスは列が合っていれば、どの行でも構いません。

Range("セルアドレス").EntireColumn.Clear

RowsとRangeはどちらを利用しても構いません。

数値、列名、セルアドレスのどれで指定したいか、

その時々で都合の良い方を選択しましょう。

なおWorksheets(“シート名")を利用すると対象シートも指定します。

シートを指定しない場合はアクティブシートのセルが対象になります。

Worksheets(インデックス) の場合は最も左のシートを1とした連番を指定します。

' アクティブシートの1列目をクリア
Columns(1).Clear
' アクティブシートのA列をクリア
Columns("A").Clear
Range("A1").EntireColumn.Clear
' Sheet1の1列目をクリア
Worksheets("Sheet1").Columns(1).Clear
' 最も左にあるシートの1列目をクリア。1つ数字を増やすと1つ右のシート
Worksheets(1).Range("A1").EntireColumn.Clear

複数列

Rangeで複数列を指定してClear系メソッドを利用すると複数列に対して削除を行います。

Range("セル範囲のアドレス").Clear

Columnsを併用すると数値で指定可能です。

Range(Columns(列数), Columns(列数)).Clear

以下コード例です。

' アクティブシートのA~C列をクリア
Range("A:C").Clear
Columns("A:C").Clear
' Sheet1のA~C列をクリア
Worksheets("Sheet1").Range(Columns(1), Columns(3)).Clear
' 最も左にあるシートのA~C列をクリア。1つ数字を増やすと1つ右のシート
Worksheets(1).Range("A:C").Clear

Office スクリプト(オンライン版)の場合

以下のコードで行います。(赤字は適宜変更)

// A1セルをクリア
workbook.getWorksheet("Test").getRange("A1").clear(ExcelScript.ClearApplyTo.contents);

詳細はこちら。

関連記事

マクロ・VBAの学習・活用方法の記事一覧

Office スクリプト(オンライン版)の場合