ここから本文です

エクセル 2013 VBA オートフィルがもしかかっていたら 全て解除するコードを教え...

osh********さん

2018/4/410:07:10

エクセル 2013 VBA オートフィルがもしかかっていたら
全て解除するコードを教えて頂けますでしょうか。

If ActiveSheet.FilterMode = True Then
ActiveSheet.ShowAllData
End If
では 出来ないのです
追記 オートフィルは 1か所 2か所 3か所とかかっている場合もあります
すみません よろしくお願いします。

補足なぜか出来る時と出来ない時があるのです

閲覧数:
215
回答数:
1
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

fro********さん

2018/4/410:25:03

オートフィルターのことですか?
オートフィルターとオートフィルは別物ですので調べて確認してみてください。

掲示のコードですと、オートフィルターモードがオンになっている時は という条件ですので、絞込みがされていない時でもShowAllDataをしようとしてしまうのでエラーになるのだと思います。

オートフィルターモードを解除せずに絞り込みだけを解除するならば
For i = 1 To ActiveSheet.AutoFilter.Filters.Count
If ActiveSheet.AutoFilter.Filters(i).On = True Then
ActiveSheet.ShowAllData
End If
Next

オートフィルターモード自体を解除して良いならば
If ActiveSheet.AutoFilterMode = True Then
ActiveSheet.Range("A1").AutoFilter
End If

で解除できます。

お好みの方法でどうぞ。

  • 質問者

    osh********さん

    2018/4/410:43:39

    なぜ出来る時と出来ない時があるのか
    分りました。
    フィルターがかかったリスト以外のセルを選択した状態で
    マクロを実行しても起動しなかったようです
    ですから
    Range("A1").Select←テーブル内のセルを一度選択してから
    If ActiveSheet.FilterMode = True Then
    ActiveSheet.ShowAllData
    End If
    を実行すれば 起動致しました。
    ありがとうございました
    フィルター自体の解除も勉強になりました。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2018/4/4 10:45:03

色々考えてくださり 勉強になりました
Range("A1").Select←テーブル内のセルを一度選択してから
If ActiveSheet.FilterMode = True Then
ActiveSheet.ShowAllData
End If
でできました

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる