2/23/2024

Excel。VBA。シート状の複数のテーブルをまとめて元の表に戻す「範囲に変換」【table release】

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 範囲に変換 を実行します。


オートフィルターは、範囲に変換で、自動的にクリアされます。

このように、たった数行で、シート内のテーブルを範囲に変換することができます。