【VBA】セルの内容を消去するあれこれ

エクセルVBAで使うコードの備忘録。ワークシートの内容を消去する関数について。内容すべてを消去するものから、値だけ、コメントだけ、書式だけ、といった風に細かく消去対象を選択可能です。

スポンサーリンク

全ての情報を消去:Clear

セルに入力されている情報(値、書式、コメント、など)を全て消去するには、 消去したいセルの「Clear」メソッドを使用します。

なお、サンプルコードを使用する際はカッコに囲まれた部分([***])を自分のプログラムに合わせて変更してください。

全ての情報を消去

Public Sub ClearTest()
    
    '--- ワークシートオブジェクトを設定 ---'
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("[ワークシート名]")
    
    '--- ワークシートのセル全体から情報を消去 ---'
    ws.Cells.Clear

    '--- ワークシートの指定セルから情報を消去 ---'
    ws.Cells([行番号], [列番号]).Clear
    ws.Range("[セルのアドレス]").Clear
    
End Sub

コメントを消去:ClearComments, ClearNotes

セルに入力されている情報のうちコメントのみを消去するには、 消去したいセルの「ClearComments」あるいは「ClearNotes」メソッドを使用します。名称が直感的なので私は「ClearComments」の方が使いやすく感じています。

コメントを消去

Public Sub ClearTest()
    
    '--- ワークシートオブジェクトを設定 ---'
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("[ワークシート名]")
    
    '--- ワークシートのセル全体から情報を消去 ---'
    ws.Cells.ClearComments

    '--- ワークシートの指定セルから情報を消去 ---'
    ws.Cells([行番号], [列番号]).ClearComments
    ws.Range("[セルのアドレス]").ClearComments
    
End Sub

値を消去:ClearContents

セルに入力されている情報のうち値のみを消去するには、 消去したいセルの「ClearContents」メソッドを使用します。おそらく「Clear…」メソッドの中では一番使用頻度が多いと思います。エクセルはただ計算するだけではなく、表として体裁を整えた状態で使っている場合が多いですので、その表の書式を変えずに値だけ消去できる「ClearContents」はよく使います。

値を消去

Public Sub ClearTest()
    
    '--- ワークシートオブジェクトを設定 ---'
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("[ワークシート名]")
    
    '--- ワークシートのセル全体から情報を消去 ---'
    ws.Cells.ClearContents

    '--- ワークシートの指定セルから情報を消去 ---'
    ws.Cells([行番号], [列番号]).ClearContents
    ws.Range("[セルのアドレス]").ClearContents
    
End Sub

書式を消去:ClearFormats

セルに入力されている情報のうち書式(フォント、文字サイズ、背景色など)のみを消去するには、 消去したいセルの「ClearFormats」メソッドを使用します。エクセルのみで作業をする際にはあまり使い道が見いだせないかもしれませんが、例えばメールやWebサイトから表を取得して貼り付けたりする場合に、一緒に張り付けられた表の書式を一度消去するときなどに使います。

書式を消去

Public Sub ClearTest()
    
    '--- ワークシートオブジェクトを設定 ---'
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("[ワークシート名]")
    
    '--- ワークシートのセル全体から情報を消去 ---'
    ws.Cells.ClearFormats

    '--- ワークシートの指定セルから情報を消去 ---'
    ws.Cells([行番号], [列番号]).ClearFormats
    ws.Range("[セルのアドレス]").ClearFormats
    
End Sub

ハイパーリンクを消去:ClearHyperlinks

ちょっと変わった消去のタイプですが、セルに入力されている情報のうちハイパーリンクのみを消去するには、 消去したいセルの「ClearHyperlinks」メソッドを使用します。セルにWebサイトのアドレスを入力すると自動でハイパーリンクが挿入されたりしますが、そのような感じで入力されているハイパーリンクの情報をセルから消去します。使い道はあまり思い当たりませんが…。

ハイパーリンクを消去

Public Sub ClearTest()
    
    '--- ワークシートオブジェクトを設定 ---'
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("[ワークシート名]")
    
    '--- ワークシートのセル全体から情報を消去 ---'
    ws.Cells.ClearHyperlinks

    '--- ワークシートの指定セルから情報を消去 ---'
    ws.Cells([行番号], [列番号]).ClearHyperlinks
    ws.Range("[セルのアドレス]").ClearHyperlinks
    
End Sub

行・列のグループ化を消去:ClearOutline

複数の列や行のグループ化(アウトラインと呼ばれます)の情報を消去するには「ClearOutline」メソッドを使用します。折りたたまれているセルを一挙に再表示する際などに使用します。

行・列のグループ化を消去

Public Sub ClearTest()
    
    '--- ワークシートオブジェクトを設定 ---'
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("[ワークシート名]")
    
    '--- ワークシートのセル全体から情報を消去 ---'
    ws.Cells.ClearOutline

    '--- ワークシートの指定セルから情報を消去 ---'
    ws.Cells([行番号], [列番号]).ClearOutline
    ws.Range("[セルのアドレス]").ClearOutline
    
End Sub

Clear…メソッドのまとめ

セルから情報を消去する「Clear…」メソッドをまとめると以下のようになります。

メソッド名説明
Clear全ての情報を消去
ClearCommentsコメントを消去
ClearContents値を消去
ClearFormats書式を消去
ClearHyperlinksハイパーリンクを消去
ClearNotesコメントを消去
ClearOutline行・列のグループ化を消去