Home » エクセルマクロ・Excel VBAの使い方 » ListObjectオブジェクト » VBAでテーブルの列を非表示にしたい

VBAでテーブルの列を非表示にしたい

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「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オブジェクトの列を非表示にしようとしたら、結局、列全体を非表示にするしかありません。
Sub テーブルの列を非表示にする()
  ActiveSheet.ListObjects(1) _
    .ListColumns(1).Range.EntireColumn.Hidden = True
End Sub

ListColumnオブジェクトのRangeプロパティで

VBAでテーブルの列を非表示にしたい

テーブルの列だけを表すRangeオブジェクトを取得して、RangeオブジェクトのEntireColumnプロパティで列全体を表すRangeオブジェクトを取得して、RangeオブジェクトのHiddenプロパティにTrueを設定すれば、テーブルの列も非表示になります。

「vba テーブル 列 非表示 listcolumn.databodyrange.hidden」という検索をなさった方は、ListObjectオブジェクト・ListColumnオブジェクトがもっと使いやすいと期待していらしたのだと思いますけれど。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » ListObjectオブジェクト » VBAでテーブルの列を非表示にしたい

「ListObjectオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.