スポンサーリンク

【VBA】テーブルを削除する方法と通常の範囲に戻す方法(ListObject.Delete)

Excelのテーブル(ListObject)は、データを整理して分析するのに便利ですが、状況によっては テーブル自体を削除したい、または 通常の範囲に戻したい という場面もあります。
例えば、不要になったテーブルを消したり、テーブル機能を解除して普通のセル範囲に変換したいときです。

この記事では、VBAを使って テーブル全体を削除する方法 と 通常の範囲に戻す方法 を解説します。


スポンサーリンク

1. テーブルを完全に削除する(Delete)

テーブルを削除する場合は、ListObject.Delete メソッドを使用します。

サンプルコード

Sub DeleteTable()
    Dim ws As Worksheet
    Dim tbl As ListObject
    
    '対象のシートを指定
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    'シート内の1つ目のテーブルを取得
    Set tbl = ws.ListObjects(1)
    
    'テーブルを削除(セル範囲ごと消える)
    tbl.Delete
End Sub

実行結果

  • テーブルのヘッダー、データ、スタイルすべてが削除され、シート上から消えます。
  • 通常のセル範囲として残らず、完全に消える点に注意

スポンサーリンク

2. テーブルを解除して通常の範囲に戻す

「テーブル機能は解除したいけど、データは残したい」という場合は、通常のセル範囲に変換する処理を行います。

実は、Excelの操作画面では「テーブル→範囲に変換」で解除できますが、VBAには直接的な「解除」メソッドはありません。
その代わりに、Unlist メソッド を使います。

サンプルコード

Sub UnlistTable()
    Dim ws As Worksheet
    Dim tbl As ListObject
    
    '対象のシートを指定
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    'シート内の1つ目のテーブルを取得
    Set tbl = ws.ListObjects(1)
    
    'テーブルを解除して通常の範囲に戻す
    tbl.Unlist
End Sub

実行結果

  • データや書式は残る
  • ただし、テーブル特有の機能(構造化参照、スタイル、フィルタボタンなど)は解除される

スポンサーリンク

3. Delete と Unlist の違い

操作方法内容データの扱い
Deleteテーブルを削除データごと削除される
Unlistテーブルを通常の範囲に変換データは残るがテーブル機能は消える

用途によって使い分けることが大切です。


スポンサーリンク

4. 注意点

  1. 複数テーブルがある場合
    • ListObjects(1) では1つ目しか操作できません。
    • 名前を指定する方法(例:ws.ListObjects("売上表"))がおすすめです。
  2. Undoできない
    • VBAで削除・解除を行うと、Excel上で「元に戻す(Ctrl+Z)」が効きません。
    • 実行前にデータをコピーしておくと安心です。

5. まとめ

  • テーブルを完全に削除するなら ListObject.Delete
  • データを残して通常の範囲に戻すなら ListObject.Unlist
  • Delete はセル範囲ごと消える、Unlist はデータを残す、という違いを理解して使い分けるのがポイント

コメント

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