「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プロパティを組み合わせて、
とするか、
Columnsプロパティを使って、
としてください。
1行目全体を非表示にしたかったのであれば、Range.EnterRowプロパティを組み合わせて、
とするか、
Rowsプロパティを使って、
としてください。
単独セルを表すRangeか行全体・列全体を表すRangeか
Excelマクロを作る場合に、もっとも良く使われるオブジェクトは、Rangeオブジェクトです。
Rangeは良く使われるオブジェクトではありますが、実は難しいオブジェクトでもあります。少なくともExcelの主要なオブジェクトである
Application
Workbook
Worksheet
Range
の中で、一番難しいオブジェクトといえます。
その難しさの原因の一つとして、Rangeオブジェクトにいくつかの種類があることがあげられます。
具体的には、単独の1つのセルを表すRangeと、行全体や列全体を表すRangeとでは、性質が異なることがあるのです。
この記事で扱っているRangeオブジェクトのHiddenプロパティもそんな例です。
Hiddenプロパティは、行全体または列全体を表すRangeオブジェクトでだけ有効なプロパティなのです。
最終更新日時:2022-04-21 13:01
Home » Excel VBA Rangeオブジェクト » 行・列を表すRange » RangeクラスのHiddenプロパティを設定できません。とは