VBA ClearContentsの使い方|値のみクリアするコードとClearとの違い

当ページのリンクには広告 (Amazonアソシエイト含む) が含まれています。
clearメソッド

Excel VBAでセルの値だけを消したいとき、何となく Clear を使うと、罫線や背景色まで消えて困ることがあります。逆に、シートを完全に初期化したい場面では ClearContents だけでは足りません。

サクッと結論

値や数式だけを消すなら ClearContents、値も書式もまとめて消すなら Clear、書式だけ消すなら ClearFormats を使いましょう。 行や列そのものを詰めて削除したい場合だけ Delete を使用します。

この記事では、VBAでセルをクリアする基本コード、ClearClearContents の違い、範囲・シート全体・表データをクリアする実務例、よくある失敗をまとめます。

【 この記事の概要 】

よく使う度
難しさ
覚えておくと安心度
目次

VBAでセルの値をクリアする基本コード|ClearContentsで値のみ削除

書式を残して、セルの値や数式だけを消したい場合は ClearContents を使います。
まずはこのコードだけ覚えておきましょう。

Sub ClearValuesOnly()
    Worksheets("Sheet1").Range("B2:F7").ClearContents
End Sub

この例では、Sheet1の B2:F7 に入っている値や数式をクリアします。
セルの背景色、罫線、表示形式、条件付き書式は残るため、入力テンプレートを使い回したいときに向いています。

ClearContentsでセルの値のみをクリアした実行結果

ClearContents は値や数式だけを消し、セルの見た目は残します。
入力欄を空にして再利用したいときの基本です。

スクロールできます
やりたいこと使うコード残るもの
値や数式だけ消すRange("B2:F7").ClearContents書式、罫線、背景色、条件付き書式
シート全体の値だけ消すWorksheets("Sheet1").Cells.ClearContentsシートの見た目、列幅、行高
選択範囲の値だけ消すSelection.ClearContents選択範囲の書式

ClearContentsの1行を分解する

ClearContents は「中身をクリアする」という意味です。
公式ドキュメントでも、範囲内の数式と値をクリアし、セルの書式と条件付き書式は残ると説明されています。

スクロールできます
部分意味
Worksheets("Sheet1")対象のシートを指定します。シート名は自分のブックに合わせて変更します。
Range("B2:F7")クリアしたいセル範囲です。1セルだけなら Range("B2") と書きます。
ClearContents指定範囲の値や数式を消します。書式は残ります。

範囲を変えたいときの書き換え例と使い分け

セルをクリアするコードを使う場合は、以下のような範囲指定を行うことで、柔軟に対応することができます。

スクロールできます
目的コード例
A1だけ値を消すWorksheets("Sheet1").Range("A1").ClearContents
B列の値を消すWorksheets("Sheet1").Columns("B").ClearContents
2行目から10行目を消すWorksheets("Sheet1").Rows("2:10").ClearContents
シート全体の値を消すWorksheets("Sheet1").Cells.ClearContents

Range・Cells・Selectionの使い分け

セルをクリアするコードでは、対象範囲の指定方法も重要です。
以下のように RangeCellsCurrentRegionSelection は、それぞれ向いている場面が違います。

スクロールできます
指定方法使う場面コード例注意点
Range範囲が決まっているRange("B2:F7").ClearContents一番読みやすく、初心者向けです。
Cells行番号・列番号で指定したいCells(2, 3).ClearContents列番号を変数で扱う処理に向いています。
Rows / Columns行や列をまとめて対象にしたいColumns("B").ClearContents列全体を消すため、見出しまで含めるか確認します。
CurrentRegion表の範囲を自動取得したいRange("B2").CurrentRegion.ClearContents空白行・空白列で範囲が途切れます。
Selection手動で選んだ範囲を処理したいSelection.ClearContents選択ミスがあるため、自動処理では避けるのが無難です。

記事に貼るコードや業務用マクロでは、できるだけ Worksheets("Sheet1").Range("B2:F7") のように、シート名と範囲をセットで書くと安全です。

セル範囲について学びたい方には以下もおすすめです

VBAのClear・ClearContents・ClearFormats・Deleteの違い

VBAでセルをクリアするときは、「値を消す」のか「書式も消す」のか「セルそのものを詰める」のかで使うメソッドが変わります。迷ったら、次の表で選んでください。

メソッド名説明
Clearセルの内容とフォーマットを、すべてクリアします。
ClearContentsセルのデータのみをクリアし、フォーマットはそのままにします。
ClearFormatsセルのフォーマットのみをクリアし、データはそのままにします。
ClearNotesセル内のコメントやメモをクリアします。
ClearHyperlinksセルに設定されたハイパーリンクをクリアしますが、
内容やフォーマットはそのままにします。
ClearOutlineセルに設定されたアウトライン(グループ化)をクリアします。
Deleteセルそのものを削除し、周囲のセルを上または左へ詰めます。

Clearは値も書式もまとめてクリアする

Clearメソッドは、セルの内容と書式を一度にクリアします。

これは、セルを完全にリセットしたいときに非常に便利です。

Range("B2:F7").Clear

この例では、セル「B2」から「F7」までの範囲をクリアします。
すべての内容とフォーマットが削除され、セルはデフォルトの状態に戻ります。
※行や列の幅は変更されたままとなります。

Clearメソッドの解説 (セルの内容・書式をクリア)

ClearContentsは値や数式だけをクリアする

ClearContentsメソッドは、セルの値や数式のみをクリアし、書式・罫線・背景色はそのまま残します。

入力欄だけを空にして、表の見た目を残したい場合に使います。

Range("B2:F7").ClearContents

この例では、セル「B2」から「F7」までのデータをクリアしますが、フォーマットはそのまま残ります。
データだけをクリアしたいときに使います。

ClearContentsメソッド (セルのデータをクリア)

その他のメソッド

ClearFormatsメソッド (セルのフォーマットをクリア)

ClearFormatsメソッドは、セルのフォーマットのみをクリアし、データはそのままにします。

これは、データの内容を保持しつつ、書式をリセットしたいときに使用します。

Range("B2:F7").ClearFormats

この例では、セル「B2」から「F7」までのフォーマットをクリアし、データはそのままにしておきます。
書式設定をリセットして、デフォルトの見た目に戻したい場合に便利です。

ClearFormatsメソッド (セルのフォーマットをクリア)

ClearNotesメソッド (セルのメモ・コメントをクリア)

ClearNotesメソッドは、セル内のメモやコメントをクリアします。

データやフォーマットには影響を与えず、注釈だけを削除したい場合に便利です。

Range("B2:F7").ClearNotes

この例では、セル「B2」から「F7」までの範囲にあるすべてのコメントやメモをクリアします。
データとフォーマットはそのまま残ります。

ClearNotesメソッド (セルのメモ・コメントをクリア)

ClearHyperlinksメソッド (セルのハイパーリンクをクリア)

ClearHyperlinksメソッドは、セルに設定されたハイパーリンクをクリアします。

内容やフォーマットはそのままにして、リンクだけを削除したい場合に使います。

Range("B2:F7").ClearHyperlinks

この例では、セル「B2」から「F7」までの範囲にあるハイパーリンクをクリアします。
リンクをリセットする場合に便利です。

しかし、青文字と下線はそのまま残ります。
元の状態に戻す場合は、個別でフォントを変更する必要があります。

ClearHyperlinksメソッド (セルのハイパーリンクをクリア)

ClearOutlineメソッド (セルのアウトラインをクリア)

ClearOutlineメソッドは、指定されたセル範囲に設定されたアウトライン(グループ化や階層構造)1を解除するために使用します。

このメソッドを使うと、グループ化された状態が解除され、元の行や列の配置に戻りますが、セルの内容や書式はそのまま保持されます。

※アウトラインとは、Excelで行や列をグループ化して折りたたんだり展開したりできる機能です。 ↩︎

Range("B2:F7").ClearOutline

このコードを実行すると、セル「B2」から「F7」に設定されているアウトラインが解除されます。
データ・フォーマットは変更されません。

ClearOutlineメソッド (セルのアウトラインをクリア)

ClearとDeleteは別物として考える

Clear はセルの中身や書式を消すだけで、セルの位置は動きません。
Delete はセルそのものを削除し、周囲のセルを上または左へ詰めます。

Sub DeleteCellsAndShiftUp()
    Worksheets("Sheet1").Range("B2:F7").Delete Shift:=xlUp
End Sub
注意

表の形を保ったまま中身だけ消したいなら Delete は使いません。
行や列が詰まるため、周囲のデータ位置がずれる可能性があります。

VBAを体系的に確認したい方は、入門書を1冊手元に置いておくと理解が早いです。

VBAで範囲・シートを値のみクリアする実務例をご紹介

ここからは、実務でそのまま使いやすい形にしたコード例です。
どの例も、対象シート名とセル範囲を自分のブックに合わせて変更してください。

使用例1 : シート全体をクリアする

まず、シート全体を対象にするときの違いを押さえておきます。
入力テンプレートを残したいなら Cells.ClearContents、シートをほぼ初期状態に戻したいなら Cells.Clear です。

'// 値だけ消す場合
Sub ClearWholeSheetValuesOnly()
    Worksheets("Sheet1").Cells.ClearContents
End Sub
'// 書式まで消す場合
Sub ClearWholeSheetAll()
    Worksheets("Sheet1").Cells.Clear
End Sub
VBAでシート全体のセルをClearでクリアした実行結果
ポイント

シート全体を対象にする場合は、値だけクリアするのか、書式までクリアするのかを先に決めます。
範囲指定より影響が大きいため、実行前の確認が重要です。

使用例2 : 複数の入力欄をまとめて値のみクリアする

請求書、集計表、チェック表などで、離れた入力欄だけを空にしたい場合は、範囲をカンマで区切って指定します。

Sub ClearInputCells()
    With Worksheets("入力")
        .Range("B3:B12,D3:D12,F3").ClearContents
    End With
End Sub

Range("B3:B12,D3:D12,F3") の部分を変えると、複数の入力欄を一度にクリアできます。
書式を残したい入力フォームでは ClearContents が安全です。

Sub ClearInputCellsWithConfirm()
    If MsgBox("入力欄の値をクリアします。よろしいですか?", _
             vbYesNo + vbQuestion) = vbNo Then Exit Sub

    Worksheets("入力").Range("B3:B12,D3:D12,F3").ClearContents
End Sub

ボタンに割り当てるマクロでは、実行前に MsgBox で確認を入れると、誤操作を減らせます。

セル範囲について学びたい方には以下もおすすめです

使用例3 : CurrentRegionで表のデータ部分だけクリアする

表の行数や列数が毎回変わる場合は、CurrentRegion で表全体を取得し、OffsetResize で見出し行を除外します。

Sub ClearTableBody()
    Dim ws As Worksheet
    Dim targetRange As Range

    Set ws = Worksheets("Sheet1")
    Set targetRange = ws.Range("B2").CurrentRegion

    If targetRange.Rows.Count <= 1 Then Exit Sub

    targetRange.Offset(1, 0) _
               .Resize(targetRange.Rows.Count - 1, targetRange.Columns.Count) _
               .ClearContents
End Sub
CurrentRegionで表のデータ部分だけをClearContentsでクリアした実行結果
見出し行を残して、データ部分だけをクリアする例です。表の行数が増減する場合に使いやすい形です。

CurrentRegion は空白行・空白列で囲まれた範囲をまとめて取得します。
表の途中に完全な空白行や空白列があると範囲が分かれるため、表の形を確認してから使ってください。

使用例4 : 最終行までのデータをまとめてクリアする

「2行目から最終行まで値のみクリアしたい」場合は、最終行を取得してから範囲を作ります。
データ行だけを初期化したいときに便利です。

Sub ClearDataToLastRow()
    Dim ws As Worksheet
    Dim lastRow As Long

    Set ws = Worksheets("Sheet1")
    lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row

    If lastRow < 2 Then Exit Sub

    ws.Range("B2:F" & lastRow).ClearContents
End Sub

この例では、B列を基準に最終行を調べ、B2:F最終行 の値や数式をクリアします。
A列が必ず入力される表なら、"B""A" に変更してください。

スポンサーリンク

VBAのクリア処理でよくあるミス・FAQとまとめ

セルのクリア処理は短いコードで書けますが、消す対象を間違えると復旧に時間がかかります。
よくあるミスを先に確認しておきましょう。

よくあるミスと対策

スクロールできます
ミス原因対策
罫線や背景色まで消えたClear を使った値だけ消したい場合は ClearContents を使う
行や列が詰まったDelete を使った表の形を残すなら Clear または ClearContents を使う
別のシートを消したアクティブシート前提で Range を使ったWorksheets("Sheet1").Range(...) のように対象を明示する
表の一部しか消えないCurrentRegion が空白行・空白列で途切れた表内の完全な空白行や空白列をなくすか、範囲を直接指定する
実行後に元に戻せないマクロ実行後は手動操作の戻るが効かないことが多い事前にブックを保存する、確認メッセージを入れる

シートクリア・範囲クリアでよくある質問

VBAで値のみクリアするには何を使えばいいですか?

ClearContents を使います。
値や数式は消えますが、書式や条件付き書式は残ります。

ClearContentsとClearの違いは何ですか?

ClearContents は値や数式を消します。
Clear は値、数式、書式などをまとめてクリアします。
入力欄だけ空にするなら ClearContents、範囲をまっさらにするなら Clear です。

ClearContentsで数式は消えますか?

消えます。
Microsoft Learnでは、ClearContents は範囲内の数式と値をクリアすると説明されています。
数式を残して計算結果だけ消す、という用途には向きません。

シート全体をクリアするにはどう書きますか?

値だけなら Worksheets("Sheet1").Cells.ClearContents、値も書式も消すなら Worksheets("Sheet1").Cells.Clear です。 実行前に対象シート名を必ず確認してください。

選択範囲をクリアするSelection.ClearContentsは使ってもいいですか?

使えます。ただし、選択している範囲に依存するため、実務コードでは対象範囲を明示する方が安全です。
ボタン実行や自動処理では Worksheets("Sheet1").Range("B2:F7").ClearContents のように書くのがおすすめです。

結合セルでもClearContentsは使えますか?

結合セルにも使えます。
ただし、結合範囲の一部だけを対象にすると扱いづらくなるため、結合範囲全体を指定するのが安全です。
実務では、結合セルを多用しない設計にするとマクロが安定します。

ClearHyperlinksを使うと文字や書式も消えますか?

基本的にはハイパーリンクだけを削除し、文字列や書式は残ります。
リンクの青色や下線が残る場合は、必要に応じて ClearFormats やフォント設定を組み合わせます。

ClearNotesとClearCommentsは何が違いますか?

どちらもセル上の注釈を消すためのメソッドですが、Excelのコメント機能はバージョンや形式によって扱いが分かれます。
迷う場合は、対象ブックでどちらの注釈を使っているか確認してから実行してください。

ClearOutlineはどんなときに使いますか?

行や列のグループ化、集計表示などで使われるアウトラインを消したいときに使います。
セルの値を消す用途ではないため、通常の入力欄リセットでは ClearContents を使います。

スポンサーリンク

まとめ

まずは ClearContents を基本にして、「書式も消す必要があるか」「行列を詰める必要があるか」を考えると、クリア処理の選び間違いを減らせます。

自宅でじっくり学びたい方へ

ClearContentsの使い方が分かったら、次はRange・Cells・繰り返し処理などを順番に整理しておくと、 実務でVBAを使うときに迷いにくくなります。

VBA入門ロードマップと習得時間の目安を見る

※リンク先の記事には、Udemy講座などの広告リンクが含まれます。

VBA入門ロードマップをスマホで開くQRコード

あとでスマホで
読む

あわせて読みたい
サイトマップ このページは、本サイトの記事を分かりやすくまとめました。ぜひご覧ください。 目次 「共通」を見る 「VBA」を見る 「Officeスクリプト」を見る 「ワークシート関数」...
スポンサーリンク

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次