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 を基本にする
