スポンサーリンク

【VBA】オートフィルタの結果を解除する方法(ShowAllData)

フィルタをかけたあとに「元の全データを表示したい」というケースはよくあります。
ExcelのVBAでは ShowAllData を使うことで、簡単にフィルタを解除できます。


スポンサーリンク

1. 基本の使い方

Sub フィルタ解除()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    'フィルタを解除
    If ws.AutoFilterMode Then
        If ws.FilterMode Then
            ws.ShowAllData
        End If
    End If
End Sub

スポンサーリンク

2. コード解説

  • ws.AutoFilterMode
    シートにフィルタが設定されているかどうかを判定します。
  • ws.FilterMode
    フィルタが実際にかかって「一部のデータが非表示」になっているかを判定します。
  • ws.ShowAllData
    フィルタを解除し、全データを表示します。

スポンサーリンク

3. トラブル回避のポイント

(1) フィルタがかかっていない場合のエラー

ShowAllData は「フィルタがかかっていない状態」で実行するとエラーになります。
そのため、上記のように If文で条件を確認してから実行するのが安全です。

(2) 見た目のフィルタボタンを消したい場合

ShowAllData は「フィルタの解除」だけで、フィルタボタン(▼)自体は残ります。
もし フィルタ機能そのものをオフにしたい場合は ws.AutoFilterMode = False を使います。

'フィルタ自体をオフにする
ws.AutoFilterMode = False

スポンサーリンク

4. 実用例:抽出処理と解除処理の流れ

Sub フィルタ処理と解除処理()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    '売上列(3列目)が100以上のデータを抽出
    ws.Range("A1:C20").AutoFilter Field:=3, Criteria1:=">=100"
    
    MsgBox "抽出しました。解除します。"
    
    '解除(安全に実行)
    If ws.AutoFilterMode Then
        If ws.FilterMode Then ws.ShowAllData
    End If
End Sub

5. まとめ

  • フィルタ解除には ShowAllData を使う
  • エラー回避のために AutoFilterMode / FilterMode を確認してから実行する
  • フィルタボタン自体を消したい場合は AutoFilterMode = False を使う

これで「データ抽出 → 全件表示」の流れを自動化できます。

コメント

タイトルとURLをコピーしました