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を活用すれば、既存のテーブルを簡単に通常のセル範囲へ変換できます。
これにより、シートの柔軟な加工や再利用、マクロ処理の簡素化が可能になります。
特に共有資料やテンプレートの整備時には、不要なテーブル構造を解除することで、他人とのやりとりがスムーズになるメリットもあります。
ぜひ、用途に応じて本記事の方法をご活用ください。