Excel VBA 逆引き集 | 行を非表示

Excel VBA
スポンサーリンク

行を非表示

「特定の行を隠したい」「条件に合う行だけ非表示にしたい」「選択範囲を一括で隠したい」など、初心者がよく使う場面を整理しました。ポイントは Rows.Hidden = True を使うこと。解除は False に戻すだけです。


基本:行を非表示にする

Sub HideRow_Basic()
    '3行目を非表示
    Rows(3).Hidden = True

    '2〜5行をまとめて非表示
    Rows("2:5").Hidden = True
End Sub
VB
  • ポイント:
    • Hidden = True → 非表示
    • Hidden = False → 再表示

選択範囲の行を非表示

Sub HideRow_Selection()
    If TypeName(Selection) = "Range" Then
        Selection.EntireRow.Hidden = True
    End If
End Sub
VB
  • ポイント:
    • 選択したセル範囲の「行全体」を非表示にできる。
    • EntireRow を付けることで、セル単位ではなく行単位で処理。

条件付きで非表示(例:金額が0の行)

Sub HideRow_ByCondition()
    Dim last As Long, r As Long
    last = Cells(Rows.Count, "E").End(xlUp).Row

    For r = 2 To last
        If Cells(r, "E").Value = 0 Then
            Rows(r).Hidden = True
        End If
    Next
End Sub
VB
  • ポイント:
    • ループで判定して、条件に合う行だけ非表示。
    • 解除は Hidden = False を同じように回せばOK。

最終行まで一括で非表示

Sub HideRow_ToLast()
    Dim last As Long
    last = Cells(Rows.Count, "A").End(xlUp).Row
    Rows("2:" & last).Hidden = True
End Sub
VB
  • ポイント:
    • データが毎回変わる表でも、最終行まで自動で範囲を指定できる。

フィルタ後の可視行だけ非表示

Sub HideRow_VisibleOnly()
    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 = True
    End If
End Sub
VB
  • ポイント:
    • フィルタで表示されている行だけを非表示にできる。
    • SpecialCells(xlCellTypeVisible) を使うのがコツ。

例題で練習

例題1:見出し行以外を全部非表示

Sub Example_HideExceptHeader()
    Dim last As Long
    last = Cells(Rows.Count, "A").End(xlUp).Row
    Rows("2:" & last).Hidden = True
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:ステータス列(F列)が「完了」の行を非表示

Sub Example_HideCompleted()
    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 = True
        End If
    Next
End Sub
VB

実務の落とし穴と対策

  • 非表示と削除の違い: Hidden は「隠すだけ」。データは残っている。削除と混同しない。
  • 解除忘れ: 再表示は Hidden = False。一括解除なら Rows.Hidden = False
  • フィルタとの併用: フィルタで非表示になっている行と、Hidden で非表示にした行は別扱い。混乱しやすいので注意。
  • 大量処理で遅い: 1行ずつループすると遅い。まとめて範囲指定して Hidden = True にすると高速。
タイトルとURLをコピーしました