大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、オートフィルタを解除する方法について、ご紹介します。解除する種類は2種類あって、「オートフィルタを解除」するのとオートフィルタの「フィルタを解除」するというものです。それぞれ「.AutoFilter」と「.ShowAllData」を使います。「.AutoFilter」の方法が簡単なので、両方覚えるのが面倒な場合は「.AutoFilter」を使いましょう。

はじめに

この記事では、オートフィルタを解除する方法について、ご紹介します。

オートフィルタの解除は2種類あります。

  • オートフィルタを解除
  • オートフィルタのフィルタを解除

という感じです。

オートフィルタを解除したい場合は、「.AutoFilter」を使います。

オートフィルタの設定は残したまま「フィルタ」を解除したい場合は、「.ShowAlldata」です。

とりあえず「.AutoFilter」で解除できるというのを覚えておけば問題ないです。

オートフィルタの操作をした後に、オートフィルタの設定は残したい、という場合には「.ShowAllData」を使ってみましょう。

では、VBAでオートフィルタを解除する方法について、解説していきます。

この記事で紹介すること

  • VBAでオートフィルタを解除する方法

目次から見たい項目へ移動すると便利ですよ。

目次

VBAコードまとめ

オートフィルタを解除するVBAコードについて、まとめています。

VBAコードだけ確認したい場合に、ご活用ください。

'「オートフィルタ」を解除
Range("B2").AutoFilter
'設定されている場合に解除
If ActiveSheet.AutoFilterMode = True Then Range("B2").AutoFilter

'「フィルタ」を解除
ActiveSheet.ShowAllData
'フィルタされている場合に解除
If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData

では、解説していきます。

オートフィルタの解除

オートフィルタの解除するには、「AutoFilter」を使います。

オートフィルタを解除(AutoFilter)

「AutoFilter」を使って、オートフィルタを解除してみます。

Sub TEST1()
    
    'オートフィルタを解除
    Range("B2").AutoFilter
    
End Sub

フィルタした表を用意しておきます。

フィルタした表

フィルタした表

では、VBAコードを実行してみます。

オートフィルタを解除

オートフィルタを解除

オートフィルタ自体を解除できました。

オートフィルタのフィルタを解除(ShowAllData)

次は、「ShowAllData」を使って、オートフィルタの「フィルタ」を解除してみます。

Sub TEST2()
    
    'オートフィルタのフィルタを解除
    ActiveSheet.ShowAllData
    
End Sub

先ほどと同じフィルタした表を用意しておきます。

フィルタした表

フィルタした表

では、VBAコードを実行してみます。

フィルタを解除

フィルタを解除

フィルタを解除できました。

オートフィルタの設定は残ったままです。

オートフィルタを解除する場合

オートフィルタを解除したい場合は、「.AutoFilter」を使います。

「.AutoFilter」を使った場合の動きについてみてみます。

AutoFilterは設定と解除が交互

「AutoFilter」は設定と解除が交互に実行されます。

Sub TEST3()
    
    'オートフィルタの解除と設定を交互
    Range("B2").AutoFilter
    
End Sub

オートフィルタを設定した表を用意しておきます。

オートフィルタを設定した表

オートフィルタを設定した表

では、実行してみます。

オートフィルタが解除される

オートフィルタが解除される

オートフィルタが解除されました。

もう一度、実行してみます。

オートフィルタが設定される

オートフィルタが設定される

オートフィルタが設定されました。

こんな感じで、「.AutoFilter」は設定と解除が交互に実行されます。

AutoFilterModeでオートフィルタの設定を確認

オートフィルタを解除した状態にしたい場合は、「AutoFilterMode」を使って設定の状況を確認します。

Sub TEST4()
    
    'オートフィルタが「設定されている」場合
    If ActiveSheet.AutoFilterMode = True Then
        Range("B2").AutoFilter 'オートフィルタを解除
    End If
    
End Sub

オートフィルタが設定されている場合で、実行してみます。

設定されている場合は解除

設定されている場合は解除

設定されているので、解除されました。

設定されていない場合は、実行してもそのまま解除された状態になります。

設定されていない場合はそのまま

設定されていない場合はそのまま

そのまま解除された状態になりました。

オートフィルタを確実に解除したい場合は、「AutoFilterMode」で確認して解除しましょう。

オートフィルタのフィルタを解除

オートフィルタの「フィルタ」を解除する場合の注意点について、解説します。

ShowAllDataはフィルタしてないとエラー

「ShowAllData」を使う場合に、フィルタしていないとエラーとなります。

Sub TEST5()
    
    'オートフィルタのフィルタを解除
    ActiveSheet.ShowAllData
    
End Sub

では、やってみます。

設定なしの場合エラー

オートフィルタを設定していない表を用意しました。

オートフィルタを設定していない場合

では、VBAコードを実行してみます。

設定なしの場合エラー

オートフィルタが設定されていないので、エラーとなりました。

フィルタなしの場合もエラー

オートフィルタを設定していても、フィルタしていない場合はエラーとなります。

フィルタしていない表を用意しました。

フィルタしていない場合

では、VBAコードを実行してみます。

フィルタなしの場合もエラー

「フィルタなし」の場合もエラーとなりました。

FilterModeでフィルタを確認

「ShowAllData」を使う場合は、「FilterMode」でフィルタを確認してから実行します。

「AutoFilterMode」ではなく「FilterMode」です。

Sub TEST6()
    
    'オートフィルタで「フィルタされている」場合
    If ActiveSheet.FilterMode = True Then
        ActiveSheet.ShowAllData 'オートフィルタのフィルタを解除
    End If
    
End Sub

フィルタなしの表で、VBAコードを実行してみます。

フィルタなしでもエラーが出ない

フィルタなしでもエラーが出ない

フィルタなしでもエラーが出ません。

フィルタありの場合はフィルタ解除されます。

フィルタありの場合はフィルタ解除

フィルタありの場合はフィルタ解除

フィルタが解除されました。

こんな感じで、「ShowAllData」を使う場合は、「FilterMode」で確認してフィルタを解除しましょう。

実務で使う場合

実務で使う場合は、最初にオートフィルタを解除して、最後はオートフィルタもしくはフィルタを解除して使います。

最後にオートフィルタの設定を解除する

最初にオートフィルタを解除して、最後にもオートフィルタの設定を解除する、というのをやってみます。

フィルタの条件が残っていて、意図しないフィルタにならないように、最初はオートフィルタを解除しましょう。

Sub TEST7()
    
    'オートフィルタを解除
    Range("B2").AutoFilter
    
    'オートフィルタ操作をする
    Range("B2").AutoFilter 3, ">=1000"
    
    'オートフィルタを解除
    Range("B2").AutoFilter
    
End Sub

では、VBAコードを実行してみます。

最初と最後にオートフィルタを解除

最初と最後にオートフィルタを解除

というように最初と最後にオートフィルタを解除すると、正しくフィルタ操作ができます。

最後はきれいにオートフィルタを解除できています。

オートフィルタの設定は残す

最初にオートフィルタを解除して、最後はオートフィルタの設定は残す、というのをやってみます。

最後にフィルタを解除してオートフィルタの設定を残すと、VBAの実行後も、すぐにフィルタ操作をすることができます。

ちょっとした気遣いです。

Sub TEST8()
    
    'オートフィルタを解除
    Range("B2").AutoFilter
    
    'オートフィルタ操作をする
    Range("B2").AutoFilter 3, ">=1000"
    
    'オートフィルタは設定したまま、フィルタのみ解除
    If ActiveSheet.FilterMode = True Then
        ActiveSheet.ShowAllData
    End If
    
End Sub

では、VBAコードを実行してみます。

最初にオートフィルタ解除して最後はフィルタを解除

最初にオートフィルタ解除して最後はフィルタを解除

最初にオートフィルタを解除するので、正しくフィルタ操作ができます。

最後はフィルタの解除だけをしているので、オートフィルタの設定は残ったままです。

オートフィルタの設定を残しておけば、すぐに手動でフィルタ操作ができます。

おわりに

この記事では、オートフィルタを解除する方法について、ご紹介しました。

オートフィルタの解除は2種類あります。

  • オートフィルタを解除
  • オートフィルタのフィルタを解除

という感じです。

オートフィルタを解除したい場合は、「.AutoFilter」を使います。

オートフィルタの設定は残したまま「フィルタ」を解除したい場合は、「.ShowAlldata」です。

とりあえず「.AutoFilter」で解除できるというのを覚えておけば問題ないです。

オートフィルタの操作をした後に、オートフィルタの設定は残したい、という場合に「.ShowAllData」を使うといいです。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す