『オートフィルターの解除』(エクセル初心者)
オートフィルターを解除するコマンドボタンを作ろうとしたのですが
上手くいきません
フィルターオプションのみを解除するには
Private Sub CommandButton1_Click()
'オートフィルターを解除し全表示
If ActiveSheet.FilterMode = True Then
ActiveSheet.ShowAllDate
End If
End Sub
のようにしたら良いと書いていたにですが
エラー438が出てしまいます。
オートフィルターも使用中(絞り込んでいる状態)のはずですが
何か抜けているのでしょうか?
< 使用 Excel:Excel2016、使用 OS:Windows10 >
Date と Data の違いか? (白茶) 2025/07/11(金) 15:11:43
「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」 というエラーメッセージにはそれなりに意味があります。 (xyz) 2025/07/11(金) 15:31:48
(Tips) Private Sub CommandButton1_Click() Dim sh As Worksheet Set sh = ActiveSheet 'オートフィルターを解除し全表示 If sh.FilterMode = True Then sh.ShowAllData End If End Sub などと変数宣言しえおけば、sh. と打ったところで候補が出ます。 sh.shなどともうすこし入力すれば候補にあたりますから、そこでTabキーを押すと確定します。 こんな風に"インテリセンス"を活用することも間違いを減らす工夫です。 (xyz) 2025/07/11(金) 15:37:38
(ついで) シートモジュールに書いているので、 特に変数を宣言しなくても、自分自身のシートは Meキーワードで指すこともできます。 Me. と書いたところで候補は出ます。あとは同じ。
Private Sub CommandButton1_Click() If Me.FilterMode = True Then Me.ShowAllData End If End Sub (xyz) 2025/07/11(金) 15:49:58
ありがとうございます!
(エクセル初心者) 2025/07/11(金) 17:03:57
前トピックで「なんでもかんでもエラーを飛ばすのはダメ」という指摘がありましたが、【適切なタイミングでエラーを無視する】ならば、それは有効なアプローチになりえます。
なので、↓のようにとりあえず実行しちゃうというのも可能ではあります。
Private Sub CommandButton1_Click() On Error Resume Next Me.ShowAllData On Error GoTo 0 End Sub
(もこな2 ) 2025/07/11(金) 23:22:01
MsgBox "オートフィルタ状態" If ActiveSheet.AutoFilter.FilterMode Then '←(注)2007以上 MsgBox "絞り込まれています" ActiveSheet.ShowAllData Else MsgBox "絞り込まれていません" End If Else MsgBox "オートフィルタ状態ではない" End If (F1) 2025/07/12(土) 17:50:29
With ActiveSheet ' 絞り込み状態(フィルターで非表示行がある)なら、全データを表示 If .FilterMode = True Then .ShowAllData End If
' オートフィルター(▼)が設定されているなら、解除 If .AutoFilterMode = True Then .AutoFilterMode = False End If End With End Sub
(通りすがり) 2025/07/13(日) 10:50:46
■1
>適切なタイミングは自分にはまだ難しいようですw
無理に使えっていう話ではなく、引き出しとして覚えておくとよいということです。
ちなみに、オートフィルタ自体を一回解除して再設定すれば同じことになるので
Sub 別案1() With ActiveSheet .AutoFilterMode = False .Range("A1").AutoFilter End With End Sub とか、
Sub 別案2() Dim buf As String
With ActiveSheet buf = .AutoFilter.Range.Address .AutoFilterMode = False .Range(buf).AutoFilter End With End Sub のようなアプローチでも解決できそうに思います。 前者は表範囲の左上の1つのセルを指定することでオートフィルタを設定しているのに対して 後者は先にオートフィルタが設定されいるセル範囲を調べておいてから解除し、 同範囲にオートフィルタを設定しています
■2
冒頭に「フィルターオプションのみを解除」とありますが、「オートフィルタの絞り込み解除」の話ですよね。
「フィルタオプション」は「オートフィルタ」と別の機能になるので、意識しておくと質問が伝わりやすいかもしれません。
(もこな2) 2025/07/13(日) 15:44:40
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.