プロが教える店舗&オフィスのセキュリティ対策術

VBA初心者です。

オートフィルターで抽出した行を削除したくて、以下のように書いたのですが、最後の一文でエラーになってしまいます。

◆エラー内容◆
実行時エラー1004
重複する選択範囲に対してそのコマンドを使用することはできません。


◆書いたVBA◆

  Range("A2").Select
Selection.AutoFilter Field:=1, Criteria1:="=1111", Operator:=xlAnd
'オートフィルターで「1111」を抽出

Dim r As Range
Set r = Range(Range("A3"), Range("A" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible)
r.ClearContents 'A列の可視セルの値をクリア

Range("A2").Select
Selection.AutoFilter 'オートフィルターの解除

r.SpecialCells(xlCellTypeBlanks).EntireRow.Delete 'A列が空白の行は削除→ ココがエラーになります

---------------------------------------------------------

元のファイル構成は2行目に項目名で、3行目からデータが入っています。
いろいろ調べたのですが、よくわからなかったので教えていただければ
幸いです。

宜しくお願いします。

A 回答 (1件)

抽出データがない時は処理しないようにしたほうが良いでしょう。


また、抽出結果範囲を r にセットし直して、ダイレクトに削除すれば良いです。

Sub try()
  Dim r As Range
  
  With ActiveSheet
    Set r = .Range("A2", .Range("A" & .Rows.Count).End(xlUp))
    r.AutoFilter Field:=1, Criteria1:="=1111"
    If WorksheetFunction.Subtotal(3, r) > 1 Then
      Set r = Intersect(r, r.Offset(1).SpecialCells(xlCellTypeVisible))
      .AutoFilterMode = False
      r.EntireRow.Delete
    Else
      MsgBox "no data"
    End If
  End With
  Set r = Nothing
End Sub
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています