📊 Excel VBA Top100
🎨

RemoveTableStyle

書式設定

アクティブシートのテーブルスタイルをすべて解除します

Excelのテーブルとして設定されている範囲を通常のセル範囲に変換し、テーブルスタイルの書式(縞模様・ヘッダー色・フィルターなど)を削除するマクロです。テーブル機能が不要になった場合や、テーブル設定が原因で起きる不具合(他のシートへのコピー時の問題・マクロとの干渉など)を解消するために使用します。書式のみ削除するか、テーブル設定自体も解除するかを選択できます。内部ではListObject.Unlistメソッドでテーブル構造自体を解除しており、書式だけでなくテーブル特有の機能(自動拡張・集計行・構造化参照)もあわせて無効化されます。Power Queryや他システムとの連携でテーブル形式が原因のエラーが起きた際の切り分けにも役立ちます。書式のみ残したい場合はTableStyleプロパティを空にする処理に変更することも可能です。

RemoveTableStyle デモ

📖 使い方

  1. VBAエディタを開く(Alt + F11)
  2. モジュールを挿入(挿入 > モジュール)
  3. 下記VBAコードをコピー&ペースト
  4. ブック上で実行(Alt + F8 でマクロ選択)
💡 実行例: RemoveTableStyle を実行すると、シート内のテーブルスタイルが削除されます

🎯 活用シーン

  • ✓テーブル設定のせいで別シートへのコピーやPower Queryとの連携に問題が起きている場合に、通常の範囲に変換したいとき
  • ✓複雑なテーブルスタイルを削除してシンプルな表に戻し、自由に書式設定できる状態にしたいとき
  • ✓外部システムへのデータ出力前にテーブル設定を解除して、シンプルなデータ範囲として処理できるようにしたいとき
  • ✓Power Queryへの読み込み時にテーブル形式が原因でエラーが出る場合に、事前に通常範囲へ変換しておきたいとき
  • ✓テーブル機能が不要になった古いシートを軽量化し、ファイル全体の動作を改善したいとき

💡 実装のヒント

  • ▸テーブルを範囲に変換しても、セルのデータは保持されます。書式のみがクリアされます。
  • ▸テーブルを範囲に変換すると、テーブルとしての自動拡張機能やフィルター・集計行などの機能が失われます。
  • ▸複数のテーブルが含まれる場合は、テーブルを一つずつ選択して実行するか、シート全体のテーブルを一括処理するようにマクロをカスタマイズしてください。
  • ▸構造化参照の数式を使っている場合、テーブル解除後は通常のセル参照に書き換える必要があるため事前に数式を確認してください。
  • ▸テーブル機能自体は残したいが見た目だけ変えたい場合は、RemoveTableStyleではなくApplyTableStyleで別スタイルを指定する方が適切です。

💻 VBAコード

' RemoveTableStyle
' -----------------
' Macro Name: RemoveTableStyle
' Description: アクティブシートのテーブルスタイルをすべて解除します
' Parameters: なし
' Returns: なし
' Usage: RemoveTableStyle を実行すると、シート内のテーブルスタイルが削除されます
' -----------------

Sub RemoveTableStyle()
    On Error GoTo ErrorHandler

    Dim ws As Worksheet
    Dim tbl As ListObject

    Set ws = ActiveSheet

    If ws.ListObjects.Count = 0 Then
        MsgBox "テーブルが見つかりません", vbInformation, "情報"
        Exit Sub
    End If

    For Each tbl In ws.ListObjects
        tbl.TableStyle = ""
    Next tbl

    MsgBox ws.ListObjects.Count & " 個のテーブルスタイルを解除しました", vbInformation, "完了"

    Exit Sub

ErrorHandler:
    MsgBox "エラーが発生しました:" & vbCrLf & Err.Description, vbCritical, "エラー"
End Sub