スポンサーリンク

【VBA】テーブルのデータだけを消す方法(ClearContents)とテーブル構造を維持するポイント

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. 実行結果

例えば、次のようなテーブルがあるとします:

商品名数量単価
りんご10100
バナナ2080

ClearContents を実行すると、下記のように「ヘッダー」と「書式」はそのままで、データ部分だけが削除されます。

商品名数量単価

5. 注意点

  1. 空のテーブルではエラーになる可能性
    → テーブルにデータがない場合、DataBodyRange が存在せずエラーになることがあります。
    その場合は以下のように Nothing チェックを入れて安全に処理しましょう。If Not tbl.DataBodyRange Is Nothing Then tbl.DataBodyRange.ClearContents End If
  2. ClearFormatsとの違い
    • ClearContents → 値や数式を消す(書式は残る)
    • ClearFormats → 書式を消す(データは残る)
    用途に応じて使い分けが必要です。

6. まとめ

  • ClearContents を使えば、データだけを削除してテーブル構造はそのまま残せる
  • 書式やテーブルスタイルを維持したいときに便利。
  • 空のテーブルに対して実行する場合はエラー処理を追加すると安心。

テーブルの「ひな型」だけを残してデータを入れ替えたいときは、ぜひこの方法を活用してください。

コメント

タイトルとURLをコピーしました