セルのクリア(値のみ)
「セルの中身だけ消したい」「書式やコメントは残したい」そんなときに使うのが ClearContents。初心者が混乱しやすい「Clear」「ClearContents」「ClearFormats」の違いも含めて、例題付きで解説します。
基本:値だけを消す
Sub ClearValues_Basic()
'A1セルの値だけ消す(書式は残る)
Range("A1").ClearContents
'B2:D5の値だけ消す
Range("B2:D5").ClearContents
End Sub
VB- ポイント:
- ClearContents → 値だけ消える。書式・背景色・フォント・コメントは残る。
- Clear → 値も書式も全部消える。
- ClearFormats → 書式だけ消える。値は残る。
列や行をまとめて値だけ消す
Sub ClearValues_ColumnRow()
'A列の値だけ消す
Columns("A").ClearContents
'3行目の値だけ消す
Rows(3).ClearContents
End Sub
VB- ポイント: 列や行を指定すれば、その範囲の値だけを一括で消せます。
シート全体の値だけ消す(書式は残す)
Sub ClearValues_Sheet()
Cells.ClearContents
End Sub
VB- ポイント:
- シート全体の値を消す。
- 書式や背景色は残るので、表の枠組みだけを維持したいときに便利。
条件付きで値を消す(例:負数だけ)
Sub ClearNegativeValues()
Dim last As Long, r As Long
last = Cells(Rows.Count, "E").End(xlUp).Row
For r = 3 To last
If Cells(r, "E").Value < 0 Then
Cells(r, "E").ClearContents
End If
Next
End Sub
VB- ポイント: 値を判定してから ClearContents を呼べば、条件付きで消せます。
例題で練習
例題1:売上表の「金額列」だけ値を消す(書式は残す)
Sub Example_ClearAmountColumn()
Dim last As Long
last = Cells(Rows.Count, "E").End(xlUp).Row
Range("E3:E" & last).ClearContents
End Sub
VB例題2:選択範囲の値だけ消す
Sub Example_ClearSelection()
If TypeName(Selection) = "Range" Then
Selection.ClearContents
End If
End Sub
VB例題3:シート全体の値を消して、枠組みだけ残す
Sub Example_ClearSheetValues()
Cells.ClearContents
End Sub
VB実務の落とし穴と対策
- ClearとClearContentsの混同:
- Clear → 値+書式+コメント全部消える。
- ClearContents → 値だけ消える。
- ClearFormats → 書式だけ消える。
- 数式も消える: ClearContents は数式も消す。数式を残したい場合は別処理が必要。
- 大量範囲で遅い: UsedRange を指定して範囲を絞ると高速化。
- 誤操作でデータ消失: 必ず対象範囲を確認してから実行。必要ならバックアップを取る。
