Home » ExcelVBA Rangeオブジェクト » 行・列を表すRange » 行が非表示かVBAで判定する-Range.Hiddenプロパティ

行が非表示かVBAで判定する-Range.Hiddenプロパティ

動作検証バージョン:Windows版Excel(バージョン1905 ビルド11629.20214)

「vba 行 非表示 判定」
という検索キーワードでアクセスがありました。

Excel VBAで、行が非表示になっているかどうかを判定するコードを探していた方による検索でしょうか。

コードを書いてテストしたものの、
「RangeクラスのHiddenプロパティを設定できません。」
実行時エラーが発生したのかもしれません。

Hiddenプロパティで非表示かを判定できる

アクティブシートで7行目を非表示にしておいて、以下のExcelマクロを実行してみてください。

Sub Rowsで行の非表示を判定する()
 If Rows(7).Hidden Then
  MsgBox "非表示です。"
 Else
  MsgBox "非表示では、ありません。"
 End If
End Sub

行を非表示にするには、行を表すRangeオブジェクトのHiddenプロパティを使います。同じHiddenプロパティで非表示になっているかどうかを判定できるということです。

EntireRowを組み合わせて非表示かを判定する

以下の2つのSubプロシージャも実行してみてください。

Sub Range_EntireRowで行の非表示を判定する()
 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 » ExcelVBA Rangeオブジェクト » 行・列を表すRange » 行が非表示かVBAで判定する-Range.Hiddenプロパティ

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

検索


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

.