「vba 行 非表示 判定」
という検索キーワードでアクセスがありました。
Excel VBAで、行が非表示になっているかどうかを判定するコードを探していた方による検索でしょうか。
コードを書いてテストしたものの、
「RangeクラスのHiddenプロパティを設定できません。」
実行時エラーが発生したのかもしれません。
Hiddenプロパティで非表示かを判定できる
アクティブシートで7行目を非表示にしておいて、以下のExcelマクロを実行してみてください。
If Rows(7).Hidden Then
MsgBox "非表示です。"
Else
MsgBox "非表示では、ありません。"
End If
End Sub
行を非表示にするには、行を表すRangeオブジェクトのHiddenプロパティを使います。同じHiddenプロパティで非表示になっているかどうかを判定できるということです。
EntireRowを組み合わせて非表示かを判定する
以下の2つのSubプロシージャも実行してみてください。
If Range("A7").EntireRow.Hidden Then
MsgBox "非表示です。"
Else
MsgBox "非表示では、ありません。"
End If
End Sub
Sub Cells_EntireRowで行の非表示を判定する()
If Cells(7, "A").EntireRow.Hidden Then
MsgBox "非表示です。"
Else
MsgBox "非表示では、ありません。"
End If
End Sub
そもそもExcelで非表示にすることができるのは行全体です。
非表示かどうかを判定する時にも、やはり行全体を表すRangeオブジェクトを取得する必要があります。
上記のSubプロシージャで
If Range("A7").EntireRow.Hidden Then
If Cells(7, "A").EntireRow.Hidden Then
の行から「.EntireRow」を削除して、
If Range("A7").Hidden Then
If Cells(7, "A").Hidden Then
の状態で実行すると、
「実行時エラー'1004': RangeクラスのHiddenプロパティを設定できません。」
エラーが発生します。
行全体を表すRangeは性質が異なる
拙著『いちばんやさしいExcel VBAの教本』のLesson 63「行全体・列全体を表すRangeオブジェクトについて学習しましょう」で、行全体や列全体を表すRangeオブジェクトは、矩形のセル範囲を表すRangeと性質が異なることをお伝えしています。
この記事でご紹介したRangeオブジェクトのHiddenプロパティは、性質が異なる、単独のセルや矩形のセル範囲を表すRangeオブジェクトでは使えない代表的なプロパティです。
最終更新日時:2022-07-04 16:31
Home » Excel VBA Rangeオブジェクト » 行・列を表すRange » 行が非表示かVBAで判定する-Range.Hiddenプロパティ