• 締切済み

VBAでオートフィルタの可視セルクリア後空白行削除がうまくできません

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行目からデータが入っています。 いろいろ調べたのですが、よくわからなかったので教えていただければ 幸いです。 宜しくお願いします。

みんなの回答

  • end-u
  • ベストアンサー率79% (496/625)
回答No.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

関連するQ&A