Excel。VBA。シート状の複数のテーブルをまとめて元の表に戻す「範囲に変換」
<ListObjectsオブジェクト>
シート状の複数のテーブルが存在しています。
A1:B8までのテーブルは、集計行が表示されています。
A10:C16までのテーブルは、未提出のみで抽出されています。
これらのテーブル機能が挿入されている表を、通常の表である。「範囲に変換」するには、どのようにしたらいいのでしょうか。
単純にテーブルデザインタブにある「範囲に変換」を実行するだけだと、縞々が残り、集計行を表示してある場合は、集計行も残ってしまうわけです。
抽出は、クリアしなくても大丈夫ですが、クリアして全データがみえるようにしたくなります。
手順としては、
1・テーブルデザインタブの集計行のチェックを外す。
2・テーブルデザインタブのテーブルスタイル「なし」にして縞々のデザインを解除します。
3・テーブルデザインタブの「範囲に変換」をクリックして、表に戻します。
これらの処理をしなければなりませんが、複数テーブルがあるというのは、かなり面倒な処理といえます。
そこで、Excel VBAでプログラム文をつくって対応することにしました。
Sub 範囲に変換()
Dim LO As ListObject
For Each LO In ActiveSheet.ListObjects
LO.ShowTotals = False
LO.TableStyle = ""
LO.Unlist
Next
End Sub
では、実行してみましょう。
このように、通常の表(範囲に変換)に戻すことができました。
それでは、プログラム文を確認しておきましょう。
Dim LO As ListObject
変数にListObjectオブジェクト(シート内の全てのテーブルが含まれます)を設定します。
For Each LO In ActiveSheet.ListObjects ~ Next
シート内のテーブル数、繰り返し処理をします。
LO.ShowTotals = False は、集計行を非表示にします。Trueだと表示します。
LO.TableStyle = "" は、テーブルスタイルをなしに設定します。これで縞々はなくなります。
LO.Unlist 範囲に変換 を実行します。
オートフィルターは、範囲に変換で、自動的にクリアされます。
このように、たった数行で、シート内のテーブルを範囲に変換することができます。