[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『フィルターを解除したい』(のあ)
エクセルを開き、シート内のデータにフィルターが設定およびフィルターが掛けられていた場合、解除する
そもそもフィルターが設定されていない場合は何もしない
という場合はどのように記載すればよいでしょうか。
原則、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.