Excel VBAでテーブルの設定を解除する方法|ListObjectから通常の範囲に戻す

Excelで一度作成したテーブル(ListObject)は、見た目や機能が便利な一方で、並べ替え・フィルター・スタイルの影響が不要になる場面もあります。
本記事では、VBAを使ってテーブルのスタイルを解除し、通常のセル範囲に戻す方法をご紹介いたします。


目次

想定される用途

  • 他人から渡されたブック内のテーブルを通常の表形式に戻したい。
  • VBA処理中、一時的にテーブル構造を解除して整形や削除を行いたい。
  • データを汎用的な形式で扱いたいため、ListObjectの制約を外したい。

VBAコードの例

以下のコードでは、アクティブシート内に存在する「顧客データ」という名前のテーブルからスタイルを外し、通常のセル範囲へ変換します。

Sub RemoveTableFormat()

    Dim tbl As ListObject

    ' テーブルを名前指定で取得
    Set tbl = ActiveSheet.ListObjects("顧客データ")

    ' スタイルをクリアし、通常の範囲に変換
    With tbl
        .TableStyle = ""   ' スタイル解除(視覚的スタイルのみ)
        .Unlist           ' テーブル構造そのものを解除
    End With

End Sub

プロパティとメソッドの解説

項目説明
ListObjects("顧客データ")テーブル名でListObjectを取得します。インデックスでも可。
.TableStyle = ""テーブルに設定されているスタイル(配色・罫線など)を解除します。
.Unlistテーブル構造そのもの(ListObject)を削除し、通常のセル範囲に変換します。

代替の取得方法

テーブル名がわからない場合は以下の方法でも取得可能です:

' アクティブセルが属するテーブルを取得
Set tbl = ActiveCell.ListObject

' または、先頭のテーブルを取得(インデックス指定)
Set tbl = ActiveSheet.ListObjects(1)

注意点

  • .Unlist 実行後は ListObject ではなくなります。参照不能になるため、後続処理の構造に注意してください。
  • テーブル名はシート上で一意である必要があります。誤った名前を指定するとエラーになります。
  • スタイルのみ解除する場合は .TableStyle = "" のみでOKです(構造は保持されます)。

まとめ

Excel VBAを活用すれば、既存のテーブルを簡単に通常のセル範囲へ変換できます。
これにより、シートの柔軟な加工や再利用、マクロ処理の簡素化が可能になります。

特に共有資料やテンプレートの整備時には、不要なテーブル構造を解除することで、他人とのやりとりがスムーズになるメリットもあります。
ぜひ、用途に応じて本記事の方法をご活用ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次