Excelのテーブル(ListObject)は、データ管理に便利ですが、色や罫線、セルの塗りつぶしなどの書式設定が増えていくと「一度書式だけをリセットしたい」と思う場面があります。
そんなときに役立つのが、ClearFormats
メソッドです。この記事では、データはそのまま残しつつ、書式だけをリセットする方法をVBAを使って解説します。
目次
1. ClearFormatsとは?
ClearFormats
メソッドは、セルに設定された書式(フォントの色、背景色、罫線、条件付き書式など)をリセットするために使用します。
ただし注意点として、セルの値や数式は削除されず、そのまま残ります。
つまり、見た目をリセットしてデータだけ残したいときに非常に便利です。
2. テーブル(ListObject)でのClearFormatsの使い方
テーブルの場合、データ部分だけを対象にするには DataBodyRange
を利用します。
これはテーブル内のヘッダー行を除いたデータ部分の範囲を表します。
以下は、テーブルの書式のみをリセットするサンプルコードです。
Sub Table_ClearFormats()
Dim ws As Worksheet
Dim tbl As ListObject
'操作するシートを指定
Set ws = ThisWorkbook.Sheets("Sheet1")
'シート内の1つ目のテーブルを取得
Set tbl = ws.ListObjects(1)
'テーブルのデータ部分(DataBodyRange)の書式をリセット
tbl.DataBodyRange.ClearFormats
End Sub
3. コードの解説
Set ws = ThisWorkbook.Sheets("Sheet1")
→ 処理対象のシートを指定しています。Set tbl = ws.ListObjects(1)
→ 指定したシートにある最初のテーブルを取得します。テーブルが複数ある場合は(2)
(3)
と変更できます。tbl.DataBodyRange.ClearFormats
→ データ部分のセルに設定されている色・罫線・フォントなどの書式をすべて削除します。
4. ClearFormatsを使うとどうなる?
例えば、以下のような書式が設定されたテーブルがあるとします。
- ヘッダーは青色の塗りつぶし
- データ部分は交互に色付き(バンド行)
- 一部のセルに赤文字や黄色背景を設定
これに対して ClearFormats
を実行すると、データ部分の色や文字装飾は消えますが、入力されている値や数式はそのまま残ります。
5. 注意点
DataBodyRange
が存在しない(テーブルが空)の場合はエラーになります。
→ この場合はIf Not tbl.DataBodyRange Is Nothing Then
で確認してから実行すると安全です。- テーブル全体のスタイル(バンド行の色など)は
ClearFormats
では消えません。
→ テーブルのデザイン自体を変更したい場合はTableStyle
を設定する必要があります(これは別記事で解説)。
6. まとめ
- ClearFormats はセルの書式だけを削除し、データは残す。
- テーブルの場合は
DataBodyRange.ClearFormats
を使うことで、データ部分のみを対象にできる。 - 書式だけを一度リセットして整理したい場合に便利。
テーブルの管理で「データはそのまま、見た目だけきれいにリセットしたい」ときに、ぜひ活用してみてください。
コメント