Home » ExcelVBA Rangeオブジェクト » 行・列を表すRange » RangeクラスのHiddenプロパティを設定できません。とは

RangeクラスのHiddenプロパティを設定できません。とは

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

Excel.Range.Hidden

「excel vba rangeクラスのhiddenプロパティを設定できません」
「エクセル マクロ rangeクラスのhiddenプロパティを設定できません」
といった検索で、このサイト『インストラクターのネタ帳』へのアクセスが時折あります。

Excel VBAで、セルを非表示にする処理を含んだマクロを作成しようとした方による検索キーワードでしょう。

[スポンサードリンク]

「RangeクラスのHiddenプロパティを設定できません。」エラーが出るサンプル

例えば、A1セルの行または列を非表示にしようとして、

Sub Sample()
 Range("A1").Hidden = True
End Sub

といったコードを書いてしまったのだろうと推測しています。

上記のマクロを実行すると、
「実行時エラー'1004': RangeクラスのHiddenプロパティを設定できません。」
エラーが発生します。

非表示にできるのは行全体または列全体

Excelのセルで非表示にできるのは、行全体か列全体です。
単独のセル、例えばA1セルだけを非表示にする、などということはExcelではできません。
VBAから処理する場合も同じです。
非表示にできるのは、A列全体か、1行目全体です。

先ほどのマクロで、
A列全体を非表示にしたかったのであれば、Range.EinterColumnプロパティを組み合わせて、

 Range("A1")EntireColumn.Hidden = True

とするか、
Columnsプロパティを使って、

 Columns(1).Hidden = True

としてください。

1行目全体を非表示にしたかったのであれば、Range.EnterRowプロパティを組み合わせて、

 Range("A1")EntireRow.Hidden = True

とするか、
Rowsプロパティを使って、

 Rows(1).Hidden = True

としてください。

単独セルを表すRangeか行全体・列全体を表すRangeか

Excelマクロを作る場合に、もっとも良く使われるオブジェクトは、Rangeオブジェクトです。

Rangeは良く使われるオブジェクトではありますが、実は難しいオブジェクトでもあります。少なくともExcelの主要なオブジェクトである
  Application
  Workbook
  Worksheet
  Range
の中で、一番難しいオブジェクトといえます。

その難しさの原因の一つとして、Rangeオブジェクトにいくつかの種類があることがあげられます。

具体的には、単独の1つのセルを表すRangeと、行全体や列全体を表すRangeとでは、性質が異なることがあるのです。
この記事で扱っているRangeオブジェクトのHiddenプロパティもそんな例です。

Hiddenプロパティは、行全体または列全体を表すRangeオブジェクトでだけ有効なプロパティなのです。

最終更新日時:2022-04-21 13:01

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » 行・列を表すRange » RangeクラスのHiddenプロパティを設定できません。とは

「行・列を表すRange」の記事一覧

検索


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

.