2017-07-13 19 views
1

フィルタ関数を削除せずにワークシートに適用されているすべてのフィルタを削除するには、次のコードを使用します。関数の場合 - 何もしない場合は何もしない

If ActiveSheet.AutoFilterMode Then ActiveSheet.ShowAllData 

しかし機会にそこにはフィルタが適用されないだろうと、私はこれとそれのエラーを実行する必要があります、適用されたフィルタがある場合、これは完璧に動作します。エラーコードは1004です。 - 'ワークシートクラスのShowAllDataメソッドが失敗しました'。

どうすればこのようなことが起こらないようにして、フィルタがない場合でもエラーにならないようにすることができます。

おかげ

答えて

2

ActiveSheet.ShowAllDataがある場合は、現在のフィルタを削除します。単に「データを表示」しますが、フィルターはそのまま残り、最終的にはActiveSheet.AutoFilter.ApplyFilterで再度適用できます。

したがって、削除されなかった既存のフィルタでShowAllDataを2回呼び出すと、エラーが発生します。

あなたがこれを使用するより良い、間違いなくフィルタを削除、または単に場所にはフィルタがないことを確認するには:そこフィルターだかどうか、

ActiveSheet.AutoFilterMode = False 

これは決してエラーを出し。したがって、がある場合、これはの前のフィルタをクリアする方法です。途中でチェックする必要はありません。

1

は単にClearTheFilterであなたのラインIf ActiveSheet.AutoFilterMode Then ActiveSheet.ShowAllDataを交換してください。

そして、現在の手順の後に(すなわちラインend subまたはend function後)を入力します: -

Private Sub ClearTheFilter() 
On error goto ErrorHandle 
If ActiveSheet.AutoFilterMode Then ActiveSheet.ShowAllData 
ErrorHandle: 
Err.Clear 
End sub 

これが何をやっていることは、エラー可能性ラインを分離した後、それがない場合はエラーをクリアする/処理しています起こる。

+0

これらの変更を実行するとエラー424が発生します。オブジェクトには 'Error.Clear'行がハイライト表示されます – Dullspark

+1

err.clear:error without or or" –

関連する問題