ich möchte die gefilterten löschen, so filter ich die zu löschende Zeilen.
Es soll die Zeile dann von der Spalte B bis AY gelöscht werden.
Selection.AutoFilter Field:=27, Criteria1:="=w*", Operator:=xlAnd
Range("B3").Select
mfg walter
Option Explicit
Sub FiltDel()
Dim lngL As Long, rngDel As Range
Selection.AutoFilter Field:=27, Criteria1:="=w*", Operator:=xlAnd
lngL = Cells(Rows.Count, 27).End(xlUp).Row
Set rngDel = ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible)
If Not rngDel Is Nothing Then
rngDel = Intersect(rngDel, Range(Cells(2, "B"), Cells(lngL, "AY")))
If Not rngDel Is Nothing Then
MsgBox rngDel.Address ' nur zum Testen
rngDel.ClearContents ' oder Clear ?
' oder
rngDel.Delete xlShiftToLeft ' oder xlShiftUp ?
End If
End If
End Sub
Beim Delete hast du noch die Qual der Wahl, ob die rechts angrenzenden Zellen nach links
Option Explicit
Sub FiltDel()
Dim lngL As Long, rngDel As Range
Selection.AutoFilter Field:=27, Criteria1:="=w*", Operator:=xlAnd
lngL = Cells(Rows.Count, 27).End(xlUp).Row
Set rngDel = ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible)
If Not rngDel Is Nothing Then
Set rngDel = Intersect(rngDel, Range(Cells(2, "B"), Cells(lngL, "AY")))
If Not rngDel Is Nothing Then
'MsgBox rngDel.Address ' nur zum Testen
' rngDel.ClearContents ' oder Clear ?
' oder
rngDel.Delete xlShiftToLeft ' oder xlShiftUp ?
End If
End If
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-LintfortPublic Sub Test_löschen()
Dim lngL As Long, rngDel As Range
Selection.AutoFilter Field:=27, Criteria1:="=w*", Operator:=xlAnd
lngL = Cells(Rows.Count, 1).End(xlUp).Row
Set rngDel = ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible)
If Not rngDel Is Nothing Then
Set rngDel = Intersect(rngDel, Range(Cells(4, "B"), Cells(lngL, "AY")))
If Not rngDel Is Nothing Then
'MsgBox rngDel.Address ' nur zum Testen
' rngDel.ClearContents ' oder Clear ?
' oder
' rngDel.Delete xlShiftToLeft ' oder xlShiftUp ?
rngDel.Delete Shift:=xlUp
End If
End If
End Sub
mfg walter
Sub Test_löschen2()
Dim lngL As Long, rngDel As Range
Selection.AutoFilter Field:=27, Criteria1:="=w*", Operator:=xlAnd
lngL = Cells(Rows.Count, 27).End(xlUp).Row
If lngL
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-LintfortSub test()
Dim rngA As Range, rngB As Range
With ActiveSheet
Set rngA = .AutoFilter.Range.Offset(1).Resize(.AutoFilter.Range.Rows.Count - 1).EntireRow
Set rngB = .Cells.SpecialCells(xlCellTypeVisible)
If Not Intersect(rngA, rngB) Is Nothing Then
Intersect(rngA, rngB).Delete 'komplette Zeilen löschen
'oder
'Intersect(rngA, rngB, .Columns("B:AY")).Delete shift:=xlShiftUp 'Zeilenbereiche löschen
End If
End With
End Sub
Gruß Gerd