エクセル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 | 行・列のグループ化を消去 |