Office
 Computer >> コンピューター >  >> ソフトウェア >> Office

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

Microsoft Excelでは、ワークシートテーブルからオートフィルターを削除する方法が複数用意されています。この記事では、VBAコードを使って、Excelでオートフィルターが存在する場合にそれを削除する7つの方法を解説します。

以下のリンクからサンプルのExcelファイルをダウンロードして、実際に手を動かしながら学習することもできます。

VBAでオートフィルターを削除する7つの具体例

1. アクティブなワークシートからオートフィルターを削除する

次のスクリーンショットは、アクティブなワークシートに適用されているオートフィルターです。これをVBAコードで削除していきます。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

アクティブなワークシートからオートフィルターを削除したい場合は、以下の手順に従ってください。

❶ まず、ALT + F11キーを押してVBAエディターを開きます。

❷ 次に、挿入 >> 標準モジュールを選択します。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

❸ 以下のVBAコードをコピーします。

Public Sub RemoveAFActiveWorksheet()

  If ActiveSheet.AutoFilterMode Then
     ActiveSheet.AutoFilterMode = False
  End If

End Sub

❹ コードをVBAエディターに貼り付けて保存します。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

コードの解説

  • まず、Public Sub RemoveAFActiveWorksheetというSubプロシージャを作成しています。
  • 次に、Ifステートメントでオートフィルターが存在するかどうかを判定し、存在する場合はAutoFilterModeFalseに設定して削除します。

❺ ワークシートに戻り、ALT + F8キーを押してマクロダイアログボックスを開きます。

❻ マクロ「RemoveAFActiveWorksheet」を選択し、「実行」ボタンをクリックします。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

すると、オートフィルターが削除され、すべてのデータが表示されるようになります。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

関連記事: Excel VBAでオートフィルターが有効かどうかを確認する方法(4つの簡単な方法)

2. ブック内のすべてのワークシートからオートフィルターを削除する

下の画像を見ると、両方のワークシートにオートフィルターが適用されていることがわかります。ここでは、ブック内のすべてのワークシートからオートフィルターを一括で削除するVBAコードを作成します。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

ブック内のすべてのワークシートからオートフィルターを削除するには、以下の手順に従います。

❶ まず、ALT + F11キーを押してVBAエディターを開きます。

❷ 次に、挿入 >> 標準モジュールを選択します。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

❸ 以下のVBAコードをコピーします。

Public Sub DeleteAFfromallWorksheets()

  Dim xWs1 As Worksheet

  For Each xWs1 In ActiveWorkbook.Worksheets
   If xWs1.AutoFilterMode = True Then
      xWs1.AutoFilterMode = False
   End If
  Next xWs1

End Sub

❹ コードをVBAエディターに貼り付けて保存します。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

コードの解説

  • For Eachループを使用して、各ワークシートにオートフィルターが設定されているかどうかを順番に確認しています。
  • 次に、Ifステートメントでオートフィルターの存在をチェックし、存在する場合はAutoFilterModeFalseに設定して削除します。

❺ ワークシートに戻り、ALT + F8キーを押してマクロダイアログボックスを開きます。

❻ マクロ「DeleteAFfromallWorksheets」を選択し、「実行」ボタンをクリックします。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

実行後は、下の画像のようにブック内のすべてのワークシートからオートフィルターのアイコンが削除されます。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

3. テーブルの単一列からオートフィルターをクリアする

下の画像では、テーブルの最初の列のみオートフィルターが適用されています。この方法では、テーブルの特定の1列だけからオートフィルターを解除するコードを作成します。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

手順は以下の通りです。

❶ まず、ALT + F11キーを押してVBAエディターを開きます。

❷ 次に、挿入 >> 標準モジュールを選択します。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

❸ 以下のVBAコードをコピーします。

Sub DeleteAFSingleColumnfromTable()

    Dim xWs1 As Worksheet
    Dim xTableName1 As String
    Dim xLT1 As ListObject

    xTableName1 = "TableA"
    Set xWs1 = Sheets("MyTable1")
    Set xLT1 = xWs1.ListObjects(xTableName1)
    xLT1.Range.AutoFilter Field:=1

End Sub

❹ コードをVBAエディターに貼り付けて保存します。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

コードの解説

  • まず、3つの変数を宣言しています。
  • 次に、テーブル名を指定し、シート名をSetステートメントで設定しています。
  • その後、ListObjectsプロパティを使用してテーブルの全内容を操作対象として取得しています。
  • 最後に、AutoFilter Field引数にテーブルの列インデックスを指定しています。

❺ ワークシートに戻り、ALT + F8キーを押してマクロダイアログボックスを開きます。

❻ マクロ「DeleteAFSingleColumnfromTable」を選択し、「実行」ボタンをクリックします。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

実行後、テーブルの最初の列からオートフィルターが消えていることが確認できます。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

4. テーブルの複数列からオートフィルターを削除する

下の画像では、テーブルの1列目と2列目オートフィルターのアイコンが表示されています。この方法を使えば、テーブルの複数の列からVBAでオートフィルターを削除できます。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

Excelテーブルの複数列からオートフィルターを解除するには、以下の手順に従ってください。

❶ まず、ALT + F11キーを押してVBAエディターを開きます。

❷ 次に、挿入 >> 標準モジュールを選択します。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

❸ 以下のVBAコードをコピーします。

Sub DeleteAFMultiColumnsfromTable()

    Dim xWs1 As Worksheet
    Dim xTableName1 As String
    Dim xLT1 As ListObject

    xTableName1 = "TableA"
    Set xWs1 = Sheets("MyTable1")
    Set xLT1 = xWs1.ListObjects(xTableName1)

    xLT1.Range.AutoFilter Field:=1
    xLT1.Range.AutoFilter Field:=2

End Sub

❹ コードをVBAエディターに貼り付けて保存します。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

コードの解説

  • まず、3つの変数を宣言しています。
  • 次に、テーブル名を指定し、シート名をSetステートメントで設定しています。
  • その後、ListObjectsプロパティを使用してテーブルの全内容を操作対象として取得しています。
  • 最後に、AutoFilter Field引数に2つの列インデックスを指定しています。

❺ ワークシートに戻り、ALT + F8キーを押してマクロダイアログボックスを開きます。

❻ マクロ「DeleteAFMultiColumnsfromTable」を選択し、「実行」ボタンをクリックします。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

コードを実行すると、複数の列からオートフィルターが削除されます。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

関連記事: [解決法] RangeクラスのAutoFilterメソッドが失敗するエラーへの対処法(5つの解決策)

5. テーブル全体からオートフィルターをクリアする

下の画像のようにテーブル全体にオートフィルターが適用されており、それらをすべて削除したい場合は、この方法を試してみてください。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

❶ まず、ALT + F11キーを押してVBAエディターを開きます。

❷ 次に、挿入 >> 標準モジュールを選択します。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

❸ 以下のVBAコードをコピーします。

Sub RemoveAFfromEntireTable()

  Dim xWs1 As Worksheet
  Dim xTable1 As String
  Dim xTable2 As ListObject

  xTable1 = "TableB"
  Set xWs1 = ActiveSheet
  Set xTable2 = xWs1.ListObjects(xTable1)
  xTable2.AutoFilter.ShowAllData

End Sub

❹ コードをVBAエディターに貼り付けて保存します。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

コードの解説

  • まず、3つの変数を宣言しています。
  • 次に、テーブル名を指定し、シート名としてActiveSheetを設定しています。
  • その後、ListObjectsプロパティでテーブルの全内容を取得し、Setステートメントで変数xTable2に格納しています。
  • 最後に、ShowAllDataメソッドを使用してオートフィルターによる絞り込みを解除しています。

❺ テーブルがあるワークシートに戻り、ALT + F8キーを押してマクロダイアログボックスを開きます。

❻ マクロ「RemoveAFfromEntireTable」を選択し、「実行」ボタンをクリックします。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

これで、下の画像のようにテーブル全体からオートフィルターが削除されます。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

6. パスワードで保護されたワークシートからオートフィルターを削除する

下の画像のデータセットにはオートフィルターが有効になっており、さらにパスワード(7878)で保護されています。

この方法では、このようなパスワード保護されたワークシートからオートフィルターを解除するVBAコードをご紹介します。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

以下の手順に従ってください。

❶ まず、ALT + F11キーを押してVBAエディターを開きます。

❷ 次に、挿入 >> 標準モジュールを選択します。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

❸ 以下のVBAコードをコピーします。

Sub RemoveAFwithPass()

Dim UserPwd As String
UserPwd = "7878"

With ActiveSheet
    .Unprotect Password:=UserPwd
    .ShowAllData
    .Protect _
        Contents:=True, _
        AllowFiltering:=True, _
        UserInterfaceOnly:=True, _
        Password:=UserPwd
End With

End Sub

❹ コードをVBAエディターに貼り付けて保存します。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

コードの解説

  • まず、変数を宣言し、パスワードを設定しています。
  • 次に、ActiveSheetに対して、Unprotect Passwordにユーザーパスワードを割り当てて保護を解除しています。
  • ShowAllDataメソッドですべての非表示データを表示させています。
  • 最後に、ContentsAllowFilteringUserInterfaceOnlyTrueを設定して再びシートを保護しています。

❺ パスワード保護されたワークシートに戻り、ALT + F8キーを押してマクロダイアログボックスを開きます。

❻ マクロ「RemoveAFwithPass」を選択し、「実行」ボタンをクリックします。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

実行後は、オートフィルターが解除され、下のようにすべてのレコードが表示されます。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

7. パスワードなしの保護されたワークシートからオートフィルターを削除する

下の画像は、パスワードなし保護されたデータセットです。この方法では、パスワード未設定の保護されたワークシートからオートフィルターを削除するコードを作成します。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

以下の手順に従ってください。

❶ まず、ALT + F11キーを押してVBAエディターを開きます。

❷ 次に、挿入 >> 標準モジュールを選択します。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

❸ 以下のVBAコードをコピーします。

Sub RemoveAFwithoutPass()

With ActiveSheet
    .Unprotect
    .ShowAllData
    .Protect _
        Contents:=True, _
        AllowFiltering:=True, _
        UserInterfaceOnly:=True
End With

End Sub

❹ コードをVBAエディターに貼り付けて保存します。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

コードの解説

  • まず、WithステートメントをActiveSheetに適用し、Unprotectメソッドでシートの保護を解除しています。
  • 次に、ShowAllDataメソッドですべての非表示データを表示させています。
  • 最後に、ContentsAllowFilteringUserInterfaceOnlyTrueを設定して再びシートを保護しています。

❺ ワークシートに戻り、ALT + F8キーを押してマクロダイアログボックスを開きます。

❻ マクロ「RemoveAFwithoutPass」を選択し、「実行」ボタンをクリックします。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

最終的に、オートフィルターがクリアされ、下のようにすべてのデータが表示されるようになります。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

練習セクション

配布しているExcelファイルの末尾には、下のスクリーンショットのような練習用シートが含まれています。この記事で紹介したすべての方法を、実際に試しながら学ぶことができます。

Excel VBAでオートフィルターが存在する場合に削除する7つの方法

まとめ

今回は、ExcelのVBAを使ってオートフィルターが存在する場合にそれを削除する7つの方法について解説しました。ぜひ、記事に添付されている練習用ワークブックをダウンロードして、すべての方法を実際に試してみてください。ご質問がある場合は、下のコメント欄でお気軽にお尋ねください。できる限り早くお答えいたします。また、弊社サイトExceldemyもぜひご覧ください。

関連記事

  • Excel VBAで同一フィールドに複数条件を指定してオートフィルターをかける方法(4つ)
  • Excel VBAで特定の値以外をオートフィルターで抽出する方法
  • VBAオートフィルター:昇順(小さい順)に並べ替える方法(3つ)
  • Excel VBAでオートフィルターを適用して表示中の行をコピーする方法

  1. 【Excel VBA】特定の値以外のデータを抽出する2つの方法|ワークシート全体・範囲指定に対応

    この記事では、ExcelのVBAを使って、特定の値「以外」のデータを抽出する方法を詳しく解説します。ワークシート全体から抽出する方法と、特定のセル範囲だけを対象に抽出する方法の2パターンを、サンプルコード付きでわかりやすくご紹介します。 完成版コード(ワークシート全体から抽出する場合) Sub Autofilter_Values_from_Whole_Worksheet() Source_Worksheet = Sheet1 Destination_Worksheet = Sheet2 Dim Filtered_Columns() As Variant Filtered_Columns =

  2. Excelで不明なリンクを削除する方法(4つの実例で解説)

    複数のExcelファイル間でデータを共有する際、ファイル同士をリンクでつなぐことがあります。しかし、意図しない「不明なリンク」がファイル内に残ってしまうケースも少なくありません。この記事では、Excelに存在する不明なリンクやその他の外部リンクを検出し、削除する方法を具体的な手順とともにわかりやすく解説します。 Excelで不明なリンクを削除する4つの方法 サンプルデータセットでは、セルD5とD9の2か所に外部リンクが存在しています。ここでは、それらの外部リンクを特定し、削除するまでの手順を順番に説明していきます。 1. セルから不明なリンクを削除する Excelのリンクにはさまざまな形があ