Excel VBA 逆引き集 | セルのクリア(値のみ)

Excel VBA
スポンサーリンク

セルのクリア(値のみ)

「セルの中身だけ消したい」「書式やコメントは残したい」そんなときに使うのが 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 を指定して範囲を絞ると高速化。
  • 誤操作でデータ消失: 必ず対象範囲を確認してから実行。必要ならバックアップを取る。
タイトルとURLをコピーしました