Excel VBA | 超初心者(Excel操作+マクロ体験):Excelオブジェクト基礎 - Clear

Excel VBA VBA
スポンサーリンク

Clear は「セルの中身や設定を“まっさらにする”ためのメソッド」

まずイメージから。
Clear は「セル(Range)に対して、“いろいろ付いているもの”をまとめて消す命令」です。

Range は「場所」
Value や Formula は「中身」
Font や Interior は「見た目」

Clear は、それらを一気に“リセット”する感じです。

ただし、「何を消すか」で兄弟たちがいるのが大事なポイントです。

  • Clear:中身・数式・書式・コメントなど、ほぼ全部
  • ClearContents:中身(値・数式)だけ
  • ClearFormats:書式だけ
  • ClearComments:コメントだけ

この違いを押さえると、「消しすぎた…」を防げます。


一番基本:Range.Clear で「そのセル範囲をまっさらにする」

A1:C3 を完全リセットする

Sub SampleClearBasic()

    Dim ws As Worksheet

    Set ws = ThisWorkbook.Worksheets("入力")

    ws.Range("A1:C3").Clear

End Sub
VB

この Clear は、
値・数式・書式(色・フォント・罫線など)・コメントなどをまとめて消します。

つまり、「その範囲を“新規ブックで何もしていない状態”に戻す」イメージです。

ここでの重要ポイントは、

「Clear は“全部消す”ので、書式だけ残したいときには使わない」

ということです。
「とにかく一回まっさらにしたい」ときに使うメソッドです。


ClearContents との違いを、必ずセットで理解する

中身だけ消したいなら ClearContents

実務で一番よく使うのは、実は Clear より ClearContents です。

Sub SampleClearContents()

    Dim ws As Worksheet

    Set ws = ThisWorkbook.Worksheets("入力")

    ws.Range("A2:C100").ClearContents

End Sub
VB

これは、「A2:C100 の値・数式だけを消す」処理です。
書式(色・罫線・フォント・表示形式など)は残ります。

「テンプレートの罫線や色はそのままにして、入力されたデータだけ消したい」
という場面では、Clear ではなく ClearContents 一択です。

Clear と ClearContents のイメージの違い

ざっくりこう覚えてください。

  • Clear:そのセルを“完全に初期状態”に戻す(中身も見た目も全部消す)
  • ClearContents:中身だけ消す(見た目はそのまま)

超初心者のうちは、
「まずは ClearContents を基本にして、“全部消したい”ときだけ Clear」
くらいの感覚で使い分けると安全です。


ClearFormats で「見た目だけリセットする」

色や罫線だけ消したいとき

Sub SampleClearFormats()

    Dim ws As Worksheet

    Set ws = ThisWorkbook.Worksheets("入力")

    ws.Range("A1:C10").ClearFormats

End Sub
VB

これは、「A1:C10 の書式だけを消す」処理です。
値・数式はそのまま残ります。

例えば、

  • いろんな色が付いてしまった表を、一度“素の見た目”に戻したい
  • 条件付き書式や手動の色付けをリセットしたい

といったときに使えます。


Clear を使うときの「どの範囲を消すか」の考え方

必ず「どのシートの、どの範囲か」を明示する

いきなり

Range("A1:C10").Clear
VB

と書くと、
「アクティブなシートの A1:C10」を消します。

超初心者のうちから、あえてこう書く癖をつけてください。

ThisWorkbook.Worksheets("入力").Range("A1:C10").Clear
VB

あるいは、変数を使って:

Dim ws As Worksheet

Set ws = ThisWorkbook.Worksheets("入力")
ws.Range("A1:C10").Clear
VB

「どのブック → どのシート → どの範囲 → 何を消す(Clear / ClearContents / ClearFormats)」
という順番を崩さない書き方を身につけると、
“別のシートをまっさらにしてしまった事故”を防げます。

最終行・最終列までを一気に消す例

「A 列のデータがどこまであるか分からないけど、そこから右に広がる表を全部消したい」
というようなときは、最終行を求めてから Clear します。

Sub SampleClearDynamic()

    Dim ws As Worksheet
    Dim lastRow As Long
    Dim rng As Range

    Set ws = ThisWorkbook.Worksheets("入力")

    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row   ' A列の最終行

    Set rng = ws.Range("A2:C" & lastRow)

    rng.ClearContents   ' データだけ消す

End Sub
VB

ここでは、

A 列の最終行を lastRow に求める
A2 から C 最終行までを Range として握る
その範囲の中身だけ ClearContents で消す

という流れです。


Clear を使うときに意識してほしい重要ポイント

「何を消したいのか」を言葉にしてからメソッドを選ぶ

コードを書く前に、一度日本語で自分に問いかけてください。

「中身だけ消したい?」
「見た目だけ消したい?」
「とにかく全部まっさらにしたい?」

それぞれに対応するのが、

中身だけ → ClearContents
見た目だけ → ClearFormats
全部 → Clear

です。

この“日本語 → メソッド”の対応を意識すると、
「とりあえず Clear しておくか…」という危険な癖を避けられます。

Clear は強力だからこそ、使う範囲を慎重に

Clear は本当に「全部消す」ので、
テンプレートの罫線や色まで消えてしまいます。

テンプレートを壊したくない場合は、
まずは ClearContents から使うようにして、
「この範囲は本当に全部リセットしていい」と確信できるところだけ Clear を使う、
というスタンスが安全です。


まとめ:Clear は「セルをどこまでリセットするか」を選べる消しゴム

Clear 系の本質は、

「Range に対して、“中身・見た目・コメントなどをどこまでリセットするか”を選べる消しゴム」

です。

押さえておきたいポイントをコンパクトにまとめると、

Range.Clear は中身・書式・コメントなど“ほぼ全部”を消す
Range.ClearContents は中身(値・数式)だけ、Range.ClearFormats は書式だけ
「どのブック → どのシート → どの範囲 → 何を消すか」を毎回はっきり書く
テンプレートを壊したくないなら、まずは ClearContents を基本にする

タイトルとURLをコピーしました