Excel VBA 不要データを一時的に非表示|見やすさや操作性を向上する方法

 

ExcelVBA  不要なデータを一時的に見えなくすると、表の見やすさや操作性を向上できます。削除とは異なり、データ自体は保持されるため、後で表示を戻すこともできます。 使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!
👉 VBAエキスパート資格のメリットを詳しく知る

 

Excel VBA  不要データを一時的に非表示|シーン

以下のシーンで利用します。

1.特定の行を一時的に非表示にする(例: 空白行や不要なデータを隠す)

2.フィルターのように特定の条件に合う行のみを表示する。

3.データを整理して、必要な部分だけを表示する。

4.ボタンやマクロで行の表示/非表示を切り替える。

 

Excel VBA  不要データを一時的に非表示サンプルコード

指定した行を非表示にする(例: 5行目)

Option Explicit

Sub HideRow5() '標準モジュール
    Rows(5).Hidden = True
End Sub

Rows(5).Hidden = True で5行目を非表示にする。

指定した行の表示/非表示を切り替える

Option Explicit

Sub ToggleRow5() '標準モジュール
    Rows(5).Hidden = Not Rows(5).Hidden
End Sub

Not Rows(5).Hidden を使って、現在の状態と逆の状態に切り替える。

選択した行を非表示にする

Option Explicit

Sub HideSelectedRow() '標準モジュール
    If Not TypeOf Selection Is Range Then
        MsgBox "セルを選択してください。", vbExclamation, "エラー"
        Exit Sub
    End If

    Selection.EntireRow.Hidden = True
End Sub

・Selection.EntireRow.Hidden = True で選択したセルの行を非表示にする。
・セルを選択していない場合のエラーチェックを入れている。

A列が空白の行を非表示にする

Option Explicit

Sub HideEmptyRows() '標準モジュール
    Dim ws As Worksheet
    Dim i As Long
    
    Set ws = ActiveSheet
    For i = ws.Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
        If ws.Cells(i, 1).Value = "" Then
            ws.Rows(i).Hidden = True
        End If
    Next i
End Sub

・Cells(Rows.Count, 1).End(xlUp).Row でA列の最終行を取得。
・For i = 最終行 To 1 Step -1 で後ろから処理することで、行のずれを防ぐ。
・If ws.Cells(i, 1).Value = "" Then でA列が空白の行を判定し、非表示にする。

B列に「非表示」という文字がある行を非表示にする

Option Explicit

Sub HideRowsWithKeyword() '標準モジュール
    Dim ws As Worksheet
    Dim i As Long
    Dim keyword As String

    Set ws = ActiveSheet
    keyword = "非表示"

    For i = ws.Cells(Rows.Count, 2).End(xlUp).Row To 1 Step -1
        If ws.Cells(i, 2).Value = keyword Then
            ws.Rows(i).Hidden = True
        End If
    Next i
End Sub

・B列 (Cells(i, 2)) に「非表示」と書かれた行を非表示にする。
・文字列を変更すれば、他の条件でも応用可能

ユーザーに非表示にする行番号を入力させる

Option Explicit

Sub HideRowByUserInput() '標準モジュール
    Dim rowNum As Variant
    
    rowNum = InputBox("非表示にする行番号を入力してください", "行非表示")
    
    If Not IsNumeric(rowNum) Or rowNum < 1 Then
        MsgBox "有効な行番号を入力してください。", vbExclamation, "エラー"
        Exit Sub
    End If
    
    Rows(CLng(rowNum)).Hidden = True
End Sub

・InputBox でユーザーに行番号を入力させる。
・数値以外や0以下の入力を防ぐため、IsNumeric(rowNum) でチェック。

シートの全行を表示する(非表示を解除)

Option Explicit

Sub UnhideAllRows() '標準モジュール
    Rows.Hidden = False
End Sub

Rows.Hidden = False で全行の非表示を解除。

Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!
👉 VBAエキスパート資格のメリットを詳しく知る

注意点

・行を非表示にしてもデータは残る
→ 削除とは異なり、データ自体は消えずに維持される。

・非表示を解除するマクロを用意しておく
→ 誤って非表示にした場合のために、UnhideAllRows のような解除マクロを作成しておくと便利。

・フィルターと併用する場合は注意
→ Hidden プロパティは手動フィルター (AutoFilter) とは別管理なので、フィルター使用時は AutoFilter を考慮する必要がある。

・行を非表示にする際、表示されているセルの内容に影響を与えないか確認
→ 計算式や参照セルの可視性に影響が出る場合があるため注意。

 

Excel VBA  不要データを一時的に非表示まとめ

目的 方法
指定の行を非表示 Rows(5).Hidden = True
指定の行の表示/非表示を切り替える Rows(5).Hidden = Not Rows(5).Hidden
選択した行を非表示 Selection.EntireRow.Hidden = True
A列が空白の行を非表示 If ws.Cells(i, 1).Value = "" Then ws.Rows(i).Hidden = True
指定の値を含む行を非表示 If ws.Cells(i, 2).Value = "非表示" Then ws.Rows(i).Hidden = True
ユーザーが指定した行を非表示 InputBox で行番号を取得
すべての行の非表示を解除 Rows.Hidden = False

 

Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!