【VBA】オートフィルタ解除&非表示を表示する|.FilterMode/.Outline
作成日:2022-11-29
更新日:2025-10-05

オートフィルタを解除し、行列を再表示する

シートの可視状態を初期化する
' Reset all filters, outlines, and hidden rows/columns|全フィルタ・グループ・非表示行列を解除
Public Function ResetFilterMode(ByVal ws As Worksheet)
On Error GoTo ErrHdl
With ws
' オートフィルタ解除
If .FilterMode Then .ShowAllData
' グループ展開(最大階層まで)
With .Outline
.ShowLevels ColumnLevels:=8, RowLevels:=8
End With
' 非表示解除
.Cells.EntireColumn.Hidden = False
.Cells.EntireRow.Hidden = False
End With
Exit Function
ErrHdl:
Call MsgError("ResetFilterMode") ' エラー発生時の識別用に関数名を渡すと良い
End Functionオートフィルタ解除 → グループ展開 → 非表示行列の表示
フィルタもグループもリセット、一発で見える化
Reset filters and outlines — reveal the full worksheet in one shot.
フィルタ解除|Remove AutoFilter
If ws.FilterMode Then ws.ShowAllData
.FilterModeは オートフィルタや詳細設定フィルタが有効なときにTrue。.ShowAllDataを呼ぶとすべてのデータを再表示(フィルタ解除)する。- エラー回避のため、この条件付きで呼ぶのがベストプラクティス。
グループ展開|Expand Outline Groups
With ws.Outline
.ShowLevels ColumnLevels:=5, RowLevels:=5
End With
.Outlineは行・列のグループ化(アウトライン)機能にアクセスするプロパティ。.ShowLevelsで「第 n 階層まで展開」できる。ColumnLevels:=5としているのは「最大5階層あるかもしれない」という想定。
→ 実際はColumnLevels:=8, RowLevels:=8のように十分大きくしてもOK。
非表示行列を表示|Unhide All Rows and Columns
With ws.Cells
.EntireColumn.Hidden = False
.EntireRow.Hidden = False
End With
- シート上のすべての列・行を対象に、
HiddenをFalseに戻している。 .Cellsに対してEntireColumnやEntireRowを指定することで全体を対象にできる。
Referenced Insights & Citations
- Microsoft Docs: Worksheet.FilterMode property
- Microsoft Docs: Outline.ShowLevels method
- Microsoft Docs: Range.EntireColumn property
| AutoFilter|オートフィルタ |
| Outline|アウトライン |
| ShowLevels|階層展開 |
| Hidden Property|非表示プロパティ |
| Error Handling|エラーハンドリング |
Always reset outlines and filters safely—visibility bugs are the silent killers of Excel macros.

データをすべて削除したい場合は、
フィルタをリセットしたうえでおこなう
2022-11-29
編集後記:
この記事の内容がベストではないかもしれません。
記事一覧
-

[VBA]開いているブックからファイルを探す 【VBA】開いている全ブックから対象ブックをセット|InStr ファイル名の一部で判定 -

[VBA]Make Directory MkDir 【VBA】フォルダを作る|MkDir(フォルダがすでに存在していればエラーになる) -

[VBA]close booksave or not 【VBA】ブックを閉じる3つの方法|保存して/保存しないで/ブック名で/ -

時間計算のDateAdd 【VBA】DateAddで時間の足し算・引き算 -

[VBA]Control the calculation再計算 【VBA】指定のシートを再計算する|Calculate -

[VBA]Trimwhitespace 【VBA】先頭,末尾,両端の空白を削除する|Trim