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. 注意点
- 複数テーブルがある場合
ListObjects(1)
では1つ目しか操作できません。- 名前を指定する方法(例:
ws.ListObjects("売上表")
)がおすすめです。
- Undoできない
- VBAで削除・解除を行うと、Excel上で「元に戻す(Ctrl+Z)」が効きません。
- 実行前にデータをコピーしておくと安心です。
5. まとめ
- テーブルを完全に削除するなら
ListObject.Delete
- データを残して通常の範囲に戻すなら
ListObject.Unlist
- Delete はセル範囲ごと消える、Unlist はデータを残す、という違いを理解して使い分けるのがポイント
コメント