非表示行を可視化(再表示)
Excelで「非表示にした行をもう一度見えるようにする」には、Hidden プロパティを False に戻すのが基本です。初心者が混乱しやすい「全部まとめて再表示」「選択範囲だけ」「条件付きで再表示」などを例題付きで整理しました。
基本:行を再表示する
Sub UnhideRow_Basic()
'3行目を再表示
Rows(3).Hidden = False
'2〜5行をまとめて再表示
Rows("2:5").Hidden = False
End Sub
VB- ポイント:
- 非表示は
Hidden = True、再表示はHidden = False。 - 複数行を範囲指定すれば一括で再表示できます。
- 非表示は
シート全体の非表示行を一括で再表示
Sub UnhideRow_All()
Rows.Hidden = False
End Sub
VB- ポイント:
- シート内のすべての行を一度に再表示。
- 「どこを隠したか分からない」ときに便利。
選択範囲の行だけ再表示
Sub UnhideRow_Selection()
If TypeName(Selection) = "Range" Then
Selection.EntireRow.Hidden = False
End If
End Sub
VB- ポイント:
- 選択したセル範囲の行だけを再表示。
EntireRowを付けることで「セル単位」ではなく「行単位」で処理。
条件付きで再表示(例:ステータス列が「完了」の行)
Sub UnhideRow_ByCondition()
Dim last As Long, r As Long
last = Cells(Rows.Count, "F").End(xlUp).Row
For r = 2 To last
If Cells(r, "F").Value = "完了" Then
Rows(r).Hidden = False
End If
Next
End Sub
VB- ポイント:
- 条件に合う行だけを再表示。
- 非表示状態かどうかに関係なく、Hidden=False を設定すれば見えるようになります。
例題で練習
例題1:見出し以外を全部非表示→再表示
Sub Example_UnhideAllExceptHeader()
'まず非表示
Dim last As Long
last = Cells(Rows.Count, "A").End(xlUp).Row
Rows("2:" & last).Hidden = True
'再表示
Rows.Hidden = False
End Sub
VB例題2:選択範囲の行を「トグル」(非表示⇔再表示)
Sub Example_ToggleSelection()
If TypeName(Selection) = "Range" Then
With Selection.EntireRow
.Hidden = Not .Hidden
End With
End If
End Sub
VB例題3:フィルタで表示されている行を一度非表示→再表示
Sub Example_UnhideVisibleRows()
Dim vis As Range
On Error Resume Next
Set vis = Range("A2:A200").SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Not vis Is Nothing Then
vis.EntireRow.Hidden = False
End If
End Sub
VB実務の落とし穴と対策
- 非表示とフィルタの違い:
- Hidden は「手動で隠す」、フィルタは「条件で表示/非表示」。両者は別物。フィルタで隠れた行は Hidden=False では表示されません。
- 解除忘れ:
- 一括解除は
Rows.Hidden = Falseが最短。
- 一括解除は
- 大量処理で遅い:
- 1行ずつループすると遅い。まとめて範囲指定して Hidden=False にすると高速。
- 結合セル:
- 結合がある行は非表示/再表示でレイアウトが崩れることがある。結合は最小限に。
