テーブルをセル範囲に戻す
Excelの「テーブル(ListObject)」を通常のセル範囲へ戻すには、Unlist を使います。見た目(色・罫線・幅)をどう扱うかでコツが変わるため、初心者向けに安全テンプレートと例題で詳しく整理します。基本は ListObject.Unlist(テーブル機能の解除)、見た目も消したい場合は TableStyle を空にしてから Unlist です。
基本:テーブルを通常の範囲へ戻す
Sub TableToRange_Basic()
'アクティブシートの1つ目のテーブルを範囲に戻す
ActiveSheet.ListObjects(1).Unlist
End Sub
VB- ポイント:
- Unlist: テーブル機能(フィルター/見出しのドロップダウン/構造化参照)を解除し、普通のセル範囲に変換します。
- データは残る: セルの値や書式は基本的に残ります。機能だけが外れます。
見た目も初期化してから範囲へ(スタイルを外して解除)
Sub TableToRange_RemoveStyle()
Dim tbl As ListObject
Set tbl = ActiveSheet.ListObjects(1)
tbl.TableStyle = "" 'テーブルの配色・罫線などのスタイルを解除
tbl.Unlist 'テーブル機能を解除して通常範囲へ
End Sub
VB- ポイント:
- TableStyle=””: テーブル固有のスタイル(帯色・罫線)を外してから Unlist すると、よりプレーンな見た目で通常範囲に戻せます。
- プレーンに戻したい時: 提出用に“素の表”にしたい場合の定番手順です。
名前指定・選択セル基準で確実に操作
Sub TableToRange_ByName()
Dim tbl As ListObject
Set tbl = ActiveSheet.ListObjects("顧客データ") 'テーブル名を指定
tbl.Unlist
End Sub
Sub TableToRange_FromActiveCell()
Dim tbl As ListObject
Set tbl = ActiveCell.ListObject 'アクティブセルが属するテーブル
If Not tbl Is Nothing Then tbl.Unlist
End Sub
VB- ポイント:
- 名前指定: 複数テーブルがあるシートでは名前で特定すると安全です。
- ActiveCell.ListObject: 選択中セルのテーブルだけを解除できます。
シート内の全テーブルを一括で範囲へ戻す
Sub TableToRange_AllInSheet()
Dim lo As ListObject
For Each lo In ActiveSheet.ListObjects
lo.Unlist
Next
End Sub
VB- ポイント:
- 一括解除: 数十テーブルがあっても一度に範囲へ変換できます。
- 安全策: 先にバックアップを取るか、対象シートを限定して実行しましょう。
Unlist と Delete の違い(重要)
- Unlist:
- 効果: テーブル機能だけ解除し、セルのデータは通常範囲として残る。見た目も基本残る(必要に応じて TableStyle=”” で外す)。
- 用途: 構造化参照や自動行増加などの“テーブル特性”を外したいとき。
- Delete:
- 効果: テーブルそのもの(セル範囲)をシートから削除。データも消える。
- 用途: テーブルごと不要なときのみ。誤操作に注意。
例題で練習
例題1:指定テーブルのスタイルを外してから通常範囲へ
Sub Example_UnlistClean()
Dim tbl As ListObject
Set tbl = ActiveSheet.ListObjects("売上テーブル")
With tbl
.TableStyle = ""
.Unlist
End With
End Sub
VB例題2:選択中のテーブルを範囲へ、できなければメッセージ
Sub Example_UnlistFromSelection()
Dim tbl As ListObject
Set tbl = ActiveCell.ListObject
If tbl Is Nothing Then
MsgBox "選択セルはテーブルではありません。"
Else
tbl.Unlist
End If
End Sub
VB例題3:シート上の全テーブルを一括解除(ログ付き)
Sub Example_UnlistAllWithLog()
Dim lo As ListObject, cnt As Long
For Each lo In ActiveSheet.ListObjects
lo.Unlist
cnt = cnt + 1
Next
MsgBox cnt & " 件のテーブルを通常範囲に戻しました。"
End Sub
VB実務の落とし穴と対策
- 見出しのドロップダウンが消える: テーブル解除でフィルターのUIが外れます。必要なら解除後に範囲にフィルターを設定し直してください。
- スタイルが残る/消えるの調整: 見た目も消したいときは TableStyle=”” を先に実行。見た目を維持したいなら Unlist だけにする。
- 誤って Delete: Delete はデータごと消えます。通常範囲に戻したいときは必ず Unlist を使う。
- 複数テーブルの混在: 名前で特定、または ActiveCell.ListObject を使うと誤対象を避けられます。
