和風スパゲティのレシピ

日本語でコーディングするExcelVBA

セルをクリアする - ClearContents/Clear

セルをクリアする方法を解説します。

値のみをクリアするClearContentsメソッドと、
書式など含めてすべてクリアするClearメソッドがあります。

セルの値をクリアする - ClearContents

セルの値をクリアする場合は、ClearContentsメソッドを実行します。

Range("A1:C5").ClearContents

 
このメソッドを実行するとセルの値のみがクリアされます。

Excelアプリ上でDeleteキーを押したときと同じ挙動ですね。


ひとつ注意点として、このメソッドは結合セルの一部分には実行できません。

例えば「A1:C5」がセル結合されている場合は、以下のような挙動になります。

Range("A1").ClearContents ' エラー
Range("A1:B2").ClearContents ' エラー
Range("A1:C5").ClearContents ' OK
Range("A1:D7").ClearContents ' OK

 
結合エリア全体を含む大きな範囲であれば実行できますが、
結合エリアの内部だけをクリアすることはできません。

上記の通り「左上のセル」だったとしてもエラーになりますので、
A1:C5結合セルをクリアしたい場合は以下いずれかのコードを実行してください。

Range("A1").Value = ""
Range("A1").MergeArea.ClearContents
Range("A1:C5").ClearContents

セルの値・書式などをすべてクリアする - Clear

セルの各種設定をすべてクリアするには、Clearメソッドを実行します。

Range("A1:C5").Clear

このコードを実行すると、セルの持つ情報・設定のうち、
値・数式・表示書式・罫線・背景色・入力規則・コメントなどをクリアします。


ほぼ初期状態に戻す機能であり、
ホームタブ[編集]にある[すべてクリア]をVBAで実行するメソッドです。

この機能でクリアされないのは、セル上にある図形や画像くらいでしょうか。


ただしセル自体が消えるわけではないため、
例えばB1セルに「=A1」という数式が入っているとき、

Range("A1").Clear ' ← B1セルは「=A1」のまま
Range("A1").Delete ' ← B1セルが「=#REF!」になる

このような動きになり、これがClearとDeleteの違いになります。


続いて結合セルに対する動きですが、これはClearContentsと同じで、
結合エリアの内部だけをクリアすることはできません。

' A1:C5が結合されているとき
Range("A1").Clear ' エラー
Range("A1:B2").Clear ' エラー
Range("A1:C5").Clear ' OK
Range("A1:D7").Clear ' OK

実行する場合は結合エリアを含む範囲に実行してください。


なお、「結合」も書式のうちのひとつですので、
Clearを実行するとセル結合は解除されます。

この仕様にも注意して使用してください。