
ExcelVBA 不要なデータを一時的に見えなくすると、表の見やすさや操作性を向上できます。削除とは異なり、データ自体は保持されるため、後で表示を戻すこともできます。 使い方や注意点など、サンプルコードをもとに具体的に解説します。
Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!
👉 VBAエキスパート資格のメリットを詳しく知る
Excel VBA 不要データを一時的に非表示|シーン
以下のシーンで利用します。
1.特定の行を一時的に非表示にする(例: 空白行や不要なデータを隠す)
2.フィルターのように特定の条件に合う行のみを表示する。
3.データを整理して、必要な部分だけを表示する。
4.ボタンやマクロで行の表示/非表示を切り替える。
Excel VBA 不要データを一時的に非表示|サンプルコード
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エキスパート資格を解説!