VBA – オートフィルタをオフにする / フィルタをクリアする
In this Article
このチュートリアルでは、VBAでオートフィルタをオフにする/クリアする方法を説明します。
オートフィルターは、VBAのコードを使用してオンまたはオフにすることができます。
VBAでアクティブワークシートのオートフィルタをオフにする
次のコード例では、アクティブなシートでオートフィルタをオフにします。
Public Sub KillFilter()
If ActiveSheet.AutoFilterMode Then
ActiveSheet.AutoFilterMode = False
End If
End Sub
VBAでアクティブワークシートのオートフィルタをオンにする
次のコード例では、アクティブシートでオートフィルタをオンにします。
Public Sub StartFilter()
If Not ActiveSheet.AutoFilterMode Then
ActiveSheet.Range("A1").AutoFilter
End If
End Sub
VBAですべてのワークシートのオートフィルタをオフにする
次のコード例では、ワークブック全体の各シートをループし、各ワークシートのオートフィルタをオフにします。
Public Sub StopAllFilters()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
If ws.AutoFilterMode = True Then
ws.AutoFilterMode = False
End If
Next ws
End Sub
VBAですべてのワークシートのオートフィルタをオンにする
同様に、次のコード例では、ワークブック全体をループし、各シートでまずフィルタの状態をチェックし、もしまだオンになっていなければ、オートフィルタをオンにします。
Public Sub StartAllFilters()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
If Not ws.AutoFilterMode Then
ws.Range("A1").AutoFilter
End If
Next ws
End Sub
VBAでアクティブなワークシートのすべてのフィルタをクリアする
次のコード例では、アクティブシートのオートフィルタをオンにしたまま、データに適用されているフィルタの条件をクリアしています。
Public Sub ClearFilter()
If ActiveSheet.FilterMode = True Then
ActiveSheet.ShowAllData
End If
End Sub
VBAですべてのワークシートのすべてのフィルタを解除する
同様に、次のコード例では、ワークブック全体をループし、各シートでオートフィルタがすでにオンになっている場合はそのままにし、データに適用されているフィルタの条件をすべてクリアします。
Public Sub ClearAllFilters()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
If ws.FilterMode = True Then
ws.ShowAllData
End If
Next ws
End Sub
VBAでテーブルのすべてのフィルタを解除する
ワークシートにテーブルオブジェクトが含まれている場合、オートフィルタをオンにしたまま、そのフィルタに適用されているすべてのフィルタの条件をクリアするようにコードを変更することができます。
Sub ClearFilterFromTable()
Dim ws As Worksheet
Dim sTable As String
Dim loTable As ListObject
sTable = "Table1"
Set ws = ActiveSheet
Set loTable = ws.ListObjects(sTable)
loTable.AutoFilter.ShowAllData
End Sub
テーブルオブジェクトがピボットテーブルにリンクされている場合、それに応じてピボットテーブルも更新されます。
VBAのコーディングが簡単に
VBAのコードをオンラインで検索するのはもうやめましょう。AutoMacro – A VBA Code Builderを使えば、初心者でも最小限のコーディング知識でゼロから手順をコーディングでき、ベテランのユーザーでも時間を節約するのに役立つ多くの機能を備えています! もっと詳しく