電子書籍の厳選無料作品が豊富!

条件に一致しない行を全て削除し、フィルタモードを解除したいのですが
エラーになってしまいます。
下記のコードを実行して
1つでも条件と一致する「あああ」があれば
ActiveSheet.ShowAllData
を実行してフィルタの解除ができるのですが
「あああ」がない時は
「実行時エラー1004 workSheetクラスのShowAllDataメソッドが失敗しました。」
となってしまいます。

Selection.AutoFilter Field:=1, Criteria1:="<>あああ" 'あああと等しくない
Rows("2:65536").Delete
ActiveSheet.ShowAllData

そしてフィルタの青い三角マークをクリックして「すべて」を選んでも青いままです。

現在は「On Error Resume Next」で対応していますが、VBAでちゃんと処理する方法はないでしょうか?

A 回答 (1件)

こんばんは。



こんな感じになるかと思います。

Sub Test1()
  With ActiveSheet
    .Range("A1").CurrentRegion.AutoFilter _
    Field:=1, Criteria1:="=あああ"  'あああと等しくない
    If WorksheetFunction.Subtotal(3, .AutoFilter.Range.Columns(1)) > 1 Then
      Application.DisplayAlerts = False
      With .AutoFilter.Range
        .Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Delete
      End With
      Application.DisplayAlerts = True
    End If
    .ShowAllData 'すべての表示 (▼が残ります)
    .AutoFilterMode = False 'フィルタの解除
  End With
End Sub
    • good
    • 0
この回答へのお礼

おお!すごいです。できました!大変参考になりました。ご回答ありがとうございます。

お礼日時:2009/04/12 17:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!