Excelのテーブル(ListObject)は、データ管理を効率化できる便利な機能ですが、「テーブルの構造は残したまま、中身のデータだけをクリアしたい」というケースも多くあります。
例えば「新しいデータを入れ直したい」「過去データを消してフォーマットだけ残したい」といった場面です。
このとき役立つのが ClearContents
です。この記事では、テーブルのデータだけを消す方法と、テーブル構造を維持する方法について詳しく解説します。
1. ClearContentsとは?
ClearContents
メソッドは、セルに入力されている 値や数式を削除 するために使用します。
ポイントは以下の通りです:
- データや数式は削除される
- セルの書式(色・罫線・フォントなど)は残る
- テーブルの構造(ヘッダーやスタイル)は維持される
つまり、テーブルの見た目や枠組みはそのままに、データだけを空にできるということです。
2. テーブルのデータだけを消すサンプルコード
以下は、テーブル内のデータをすべてクリアするVBAコードです。
Sub Table_ClearContents()
Dim ws As Worksheet
Dim tbl As ListObject
'操作対象のシートを指定
Set ws = ThisWorkbook.Sheets("Sheet1")
'シート内の1つ目のテーブルを取得
Set tbl = ws.ListObjects(1)
'テーブルのデータ部分の値を削除(書式は残る)
tbl.DataBodyRange.ClearContents
End Sub
3. コード解説
Set ws = ThisWorkbook.Sheets("Sheet1")
→ 処理対象のシートを指定。Set tbl = ws.ListObjects(1)
→ そのシートにある1つ目のテーブルを取得。tbl.DataBodyRange.ClearContents
→ テーブルのデータ部分(DataBodyRange)の値や数式を削除し、セルを空にします。
4. 実行結果
例えば、次のようなテーブルがあるとします:
商品名 | 数量 | 単価 |
---|---|---|
りんご | 10 | 100 |
バナナ | 20 | 80 |
ClearContents
を実行すると、下記のように「ヘッダー」と「書式」はそのままで、データ部分だけが削除されます。
商品名 | 数量 | 単価 |
---|---|---|
5. 注意点
- 空のテーブルではエラーになる可能性
→ テーブルにデータがない場合、DataBodyRange
が存在せずエラーになることがあります。
その場合は以下のようにNothing
チェックを入れて安全に処理しましょう。If Not tbl.DataBodyRange Is Nothing Then tbl.DataBodyRange.ClearContents End If
- ClearFormatsとの違い
ClearContents
→ 値や数式を消す(書式は残る)ClearFormats
→ 書式を消す(データは残る)
6. まとめ
ClearContents
を使えば、データだけを削除してテーブル構造はそのまま残せる。- 書式やテーブルスタイルを維持したいときに便利。
- 空のテーブルに対して実行する場合はエラー処理を追加すると安心。
テーブルの「ひな型」だけを残してデータを入れ替えたいときは、ぜひこの方法を活用してください。
コメント