「vba テーブル 列 非表示 listcolumn.databodyrange.hidden」
という検索でアクセスがありました。
Excel VBA(Visual Basic for Applications)で、テーブル(ListObjectオブジェクト)の列を非表示にするオブジェクト式について調べていた方による検索キーワードです。
「vba テーブル 列 非表示 listcolumn.databodyrange.hidden」という検索キーワードから推測すると、
ActiveSheet.ListObjects(1) _
.ListColumns(1).DataBodyRange.Hidden = True
といったオブジェクト式で、アクティブシートの1つ目のListObjectオブジェクトの、1列目のデータ部分だけを非表示にできると考えたのではないでしょうか。
ListObjectも結局はセル範囲
Excel 2003から使えるようになった、リスト機能・テーブル機能(ListObjectオブジェクト)は、便利ではありますが結局はセル範囲です。
Excelでは、A1:A10セルだけを非表示にする、といったことはできません。
非表示にできるのは、あくまでも列単位か行単位です。
VBAからListObjectオブジェクトを操作する場合も、この制約は同じです。
「.ListColumns(1).DataBodyRange.Hidden = True」といったオブジェクト式は、A1:A10セルだけを非表示にしようとしているのと同じですから、残念ながら実行できません。
「RangeクラスのHiddenプロパティを設定できません。」エラーが発生します。
テーブルの列を非表示にするサンプルマクロ
ListObjectオブジェクトの列を非表示にしようとしたら、結局、列全体を非表示にするしかありません。ActiveSheet.ListObjects(1) _
.ListColumns(1).Range.EntireColumn.Hidden = True
End Sub
ListColumnオブジェクトのRangeプロパティで
テーブルの列だけを表すRangeオブジェクトを取得して、RangeオブジェクトのEntireColumnプロパティで列全体を表すRangeオブジェクトを取得して、RangeオブジェクトのHiddenプロパティにTrueを設定すれば、テーブルの列も非表示になります。
「vba テーブル 列 非表示 listcolumn.databodyrange.hidden」という検索をなさった方は、ListObjectオブジェクト・ListColumnオブジェクトがもっと使いやすいと期待していらしたのだと思いますけれど。
Home » エクセルマクロ・Excel VBAの使い方 » ListObjectオブジェクト » VBAでテーブルの列を非表示にしたい