Excel VBA 逆引き集 | セルのクリア(書式も)

Excel VBA
スポンサーリンク

セルのクリア(書式も)

「値も書式もまとめて消したい」「表の枠組みごと初期化したい」なら Clear。値だけ、書式だけとの違いを押さえたうえで、初心者向けの安全テンプレートと例題をまとめます。Clearは値・書式・コメントなど“ほぼ全部”を消し、セルを初期状態にします。ClearContentsは値・数式のみ、ClearFormatsは書式のみを消します。


基本:値も書式もまとめて消す(最短コード)

Sub ClearAll_Basic()
    'A1:C3 の値・書式・コメント等をすべてクリア(初期状態に)
    Range("A1:C3").Clear
End Sub
VB
  • ポイント: Clearは「値・数式・フォント・背景色・罫線・表示形式・コメント」などをまとめてクリアします。セルは未使用(初期)状態に戻ります。

使い分けの整理(値のみ/書式のみ/全部)

Sub ClearVariants()
    Range("B2:D5").ClearContents  '値・数式だけ消す(書式は残す)
    Range("B2:D5").ClearFormats   '書式だけ消す(値は残す)
    Range("B2:D5").Clear          '値+書式+コメント等を全部消す
End Sub
VB
  • ポイント:
    • ClearContentsは「数式と文字列」を削除し、書式は残します。
    • ClearFormatsは「背景色・罫線・フォント・表示形式・条件付き書式」などの書式だけを削除します。
    • 「全部消したい」なら Clear を選びます。

書式も消したいが範囲を限定する(列・行・使用範囲)

Sub ClearColumnRowUsedRange()
    Columns("E").Clear          'E列の値・書式を全部クリア
    Rows("3:10").Clear          '3〜10行をクリア
    ActiveSheet.UsedRange.Clear '使用中セルだけを一括クリア
End Sub
VB
  • ポイント: Columns/Rows/UsedRange に対しても Clear を使えます。UsedRangeなら「触っている範囲だけ」初期化でき、余計な場所を壊しにくいです。

書式だけ消してから、必要な表示を再設定(安全テンプレート)

Sub ResetFormatsThenApply()
    With Range("B3:F100")
        .ClearFormats                     'まず書式を全部消す
        .NumberFormat = "#,##0"           '表示形式(例:3桁区切り)
        .Font.Name = "Meiryo"             'フォント
        .Font.Size = 10
        .Interior.ColorIndex = xlColorIndexNone '背景なし
        .Borders.LineStyle = xlLineStyleNone    '罫線なし
    End With
End Sub
VB
  • ポイント: ClearFormatsは表示形式も消します。日付列などは「シリアル値(例:44909)」に見えるため、必要な表示形式を必ず再設定します。

条件付きでクリア(例:負数だけは値も書式も消す)

Sub ClearNegative_All()
    Dim last As Long, r As Long
    last = Cells(Rows.Count, "F").End(xlUp).Row
    For r = 3 To last
        If Cells(r, "F").Value < 0 Then
            Cells(r, "F").Clear '該当セルを完全クリア
        End If
    Next
End Sub
VB
  • ポイント: 条件判定→Clearで「値・書式・コメント等」まとめて削除できます。値だけなら ClearContents、書式だけなら ClearFormats に切り替えます。

例題で練習

例題1:提出前に表範囲を初期化(値・書式・コメント等)

Sub Example_ClearTableAll()
    Range("B2:F50").Clear
End Sub
VB

例題2:値は残して“見た目だけ”リセット→再整形

Sub Example_ResetLooks()
    With Range("C3:E100")
        .ClearFormats
        .NumberFormat = "yyyy/mm/dd"  '日付列なら再設定が必要
        .Font.Name = "Meiryo"
        .Font.Size = 10
    End With
End Sub
VB

例題3:シートの使用範囲だけ完全クリア(余白は触らない)

Sub Example_ClearUsedRange()
    ActiveSheet.UsedRange.Clear
End Sub
VB

実務の落とし穴と対策

  • 日付が数字に見える問題: 書式を消すと日付はシリアル値表示になるため、必要な表示形式(例:yyyy/mm/dd)を再設定します。
  • 「全部消したい」の誤用: Clearは強力です。範囲を限定(UsedRangeや表範囲)し、必要ならバックアップを取ってから実行します。
  • 値だけ消したいのに書式まで消えた: ClearContentsとClearの使い分けを徹底。書式だけ消す場合は ClearFormats を使うと安全です。
  • 条件付き書式も消える: ClearFormatsは条件付き書式もクリアします。必要なら再設定のコードを併用します。
タイトルとURLをコピーしました