「excel vba 非表示行を一斉表示」
「エクセルマクロ 非表示行の表示」
といった検索で、このサイト・インストラクターへのネタ帳のアクセスがありました。
ワークシート上の非表示に設定されている行をすべて再表示するには、Excel VBA(Visual Basic for Applications)で、どのようなコードを書けばいいのかを探していた方による検索です。
アクティブシートの行をすべて表示するサンプルマクロ
以下のような1行のマクロで、アクティブなワークシート上の行がすべて表示されます。Rows.Hidden = False
End Sub
行全体を表すRangeオブジェクトのHiddenプロパティを、Falseに設定すれば行が表示されます。
「非表示になっていた場合に再表示する」
のような、If文を考えてしまう方もいらっしゃるかもしれませんが、有無を言わさず全部表示すればいいのでIf文は不要です。
行全体を表すRangeオブジェクトを取得するオブジェクト式はいくつかありますが、ここではシンプルなコードになるRowsプロパティを利用しています。
Rowsプロパティに引数を指定しなければ、すべての行を表すRangeオブジェクトが取得できます。
なお、Rowsプロパティは、グローバルメンバーですから上位のオブジェクト式を省略しています。
RowsではなくCells.EntireRowを使う場合
上記のSubプロシージャでは、行全体を表すRangeオブジェクトを返すRowsプロパティを使って
Rows.Hidden = False
としていますが、Cellsプロパティを使って、
Cells.EntireRow.Hidden = False
としても同じです。
Cellsプロパティに引数を指定しない場合は、すべてのセルを表すRangeオブジェクトが取得できます。
Range.Hiddenプロパティは、行全体や列全体を表すRangeオブジェクトでのみ使えるプロパティですから、行全体を表すRangeオブジェクトを返すEntireRowプロパティを組み合わせたオブジェクト式にしています。
すべてのシートのすべての行を表示するサンプルマクロ
アクティブなブックの、すべてのワークシートの行を、すべて表示するなら以下のようなマクロです。
Dim sh As Worksheet For Each sh In Worksheets
sh.Rows.Hidden = False
Next sh
End Sub
アクティブブックの全ワークシートに対してFor each~Nextループを回して、
For Each sh In Worksheets
個々のシートで先のマクロと同じ方法で、すべての行の表示を行っています。
sh.Rows.Hidden = False
すべての行を表示するオブジェクト式は、CellsプロパティとEntireRowプロパティを使って、
sh.Cells.EntireRow.Hidden = False
としてもOKです。
For~Nextループを使って全シートのすべての行を表示するサンプルマクロ
同じことをFor Each~Nextループではなく、For~Nextループでももちろんできます。
Dim i As Long With Worksheets
For i = 1 To .Count
.Item(i).Rows.Hidden = False
Next i
End With
End Sub
上記のSubプロシージャの、
With Worksheets
For i = 1 To .Count
.Item(i).Rows.Hidden = False
Next i
End With
は、Withステートメントを使わずに、
For i = 1 To Worksheets.Count
Worksheets(i).Rows.Hidden = False
Next i
と書いてもOKです。
Home » Excel VBA Rangeオブジェクト » 行・列を表すRange » すべての行を表示するExcelマクロ