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

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

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

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

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

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

[スポンサードリンク]

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

以下のSubプロシージャが参考になるでしょう。


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

アクティブシートで7行目を非表示にしておいて上記の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プロシージャで「.EntireRow」を削除して、「Range("A7").Hidden」「Cells(7, "A").Hidden」の状態で実行すると、
「実行時エラー'1004': RangeクラスのHiddenプロパティを設定できません。」
エラーが発生します。

行全体を表すRangeは性質が異なる

拙著『いちばんやさしいExcel VBAの教本』のLesson 63「行全体・列全体を表すRangeオブジェクトについて学習しましょう」で、行全体や列全体を表すRangeオブジェクトは、矩形のセル範囲を表すRangeと性質が異なることをお伝えしています。

この記事でご紹介したRangeオブジェクトのHiddenプロパティは、性質が異なる、単独のセルや矩形のセル範囲を表すRangeオブジェクトでは使えない代表的なプロパティです。

最終更新日時:2019-06-14 10:22

[スポンサードリンク]

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

TrackBack:0

TrackBack URL

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

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

検索


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

.