- 締切済み
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行目からデータが入っています。 いろいろ調べたのですが、よくわからなかったので教えていただければ 幸いです。 宜しくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- end-u
- ベストアンサー率79% (496/625)
抽出データがない時は処理しないようにしたほうが良いでしょう。 また、抽出結果範囲を 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