『フィルターを解除したい』(のあ)
エクセルを開き、シート内のデータにフィルターが設定およびフィルターが掛けられていた場合、解除する
そもそもフィルターが設定されていない場合は何もしない
という場合はどのように記載すればよいでしょうか。
原則、1行目が項目行なので1行目のフィルター判定ですが、
もしどの行にフィルターが掛けられていても解除できると嬉しいです
< 使用 Excel:Excel2019、使用 OS:Windows11 >
(はこ) 2025/04/02(水) 09:10:58
Sub test() If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilter.Range.AutoFilter End If End Sub 別シートならシート指定を修正してください。 (xyz) 2025/04/02(水) 09:26:06
Sub test() ActiveSheet.AutoFilterMode = False End Sub で良かったですね。 (xyz) 2025/04/02(水) 15:23:19
■1
>フィルターが設定およびフィルターが掛けられていた場合
上記の発言から、「どの行にフィルターが掛けられていても解除」とは 「どの"列"でも"絞り込み"されていたら、"すべての絞り込み"を解除」 という意味だったりしませんか? (オートフィルタの設定自体は解除したくない)
■2
読み通りであれば、提案があるように、いったんオートフィルタ(の設定自体)を解除してから、再度オートフィルタを設定するか、エラーを無視するようにしてから「ShowAllData」をすればよいとおもいます。
(もこな2) 2025/04/03(木) 08:00:07
Sub 研究用() Stop 'ブレークポイントの代わり With ActiveSheet
'いったん解除してから再設定 With .AutoFilter.Range .Parent.AutoFilterMode = False .AutoFilter End With
'(エラーを無視して)絞り込みを解除 On Error Resume Next .ShowAllData On Error GoTo 0 End With End Sub
上記のように全絞り込みを解除したいのであれば「ShowAllDataメソッド」を使うとよいと思います。 (オートフィルタ自体が設定されていなかったり、絞り込みがされていないとエラーになるので、 大抵の場合「On Error ステートメント」と組み合わせて使うことになります)
(もこな2 ) 2025/04/05(土) 14:41:44
If ActiveSheet.AutoFilterMode Then If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData End If End If (マナ) 2025/04/05(土) 16:00:17
>原則、1行目が項目行なので1行目のフィルター判定ですが、 >もしどの行にフィルターが掛けられていても解除できると嬉しいです
もしテーブルならば
With ActiveSheet.ListObjects(1) If .ShowAutoFilter Then .ShowAutoFilter = False '<-- AutoFilter解除 If .ShowAutoFilter Then .AutoFilter.ShowAllData '<-- 全てのデータを表示 End With (jindon) 2025/04/05(土) 18:14:16
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.