AW: Inhalte löschen außer Daten im Filter
29.01.2018 14:17:31
fcs
Hallo Norbert,
das Makro funktioniert innerhalb eins "normalen" Autofilterbereiches in einem Tabellenblatt.
Wenn die Daten innerhalb des Tabellenblatts in einer Tabelle/Liste stehen, dann muss das Makro anders aussehen.
Ich hab das Makro mal entsprechend erweitert.
Gruß
Franz
Sub Filter_sichtbar_loeschen()
Dim WKS As Worksheet, objList As ListObject
Dim Zei_1 As Long, Zei_L As Long
Dim Spa_1 As Long, Spa_L As Long
Set WKS = ActiveSheet
If MsgBox("Sollen die sichtbaren Zeilen des Autofilterbreichs gelöscht werden?", _
vbQuestion + vbOKCancel, "Gefiltere Löschen") = vbCancel Then Exit Sub
With WKS
If .ListObjects.Count > 0 Then
Set objList = .ListObjects(1)
With objList
If .ShowAutoFilter = True Then
If .AutoFilter.FilterMode = True Then
.DataBodyRange.SpecialCells(xlCellTypeVisible).ClearContents
.AutoFilter.ShowAllData
For Zei_1 = .DataBodyRange.Rows.Count To 1 Step -1
If Application.WorksheetFunction.CountA(.ListRows(Zei_1).Range) = 0 Then
.ListRows(Zei_1).Delete
End If
Next
Else
MsgBox "in der Tabelle ist kein Filter gesetzt!"
End If
Else
MsgBox "in der Tabelle ist der Autofilter nicht aktiv!"
End If
End With
Else
If .AutoFilterMode = True Then
If .FilterMode = True Then
With .AutoFilter.Range
Zei_1 = .Row + 1
Zei_L = .Row + .Rows.Count - 1
Spa_1 = .Column
Spa_L = .Column + .Columns.Count - 1
End With
'sichtbare Werte im Autofilterbereich löschen
With .Range(.Cells(Zei_1, Spa_1), .Cells(Zei_L, Spa_L))
.SpecialCells(xlCellTypeVisible).Delete shift:=xlShiftUp
End With
'alle Daten anzeigen
.ShowAllData
Else
MsgBox "Im aktiven Tabellenblatt ist kein Filter gesetzt", _
vbOKOnly, "Gefiltere Löschen"
End If
Else
MsgBox "Im aktiven Tabellenblatt ist der Autofilter nicht aktiv", _
vbOKOnly, "Gefiltere Löschen"
End If
End If
End With
End Sub