AW: spezielle Anwendung des Filters
19.04.2014 11:27:58
fcs
Hallo Christian,
der einfachste Weg, zu vermeiden, dass Excel die 1. Datenzeile unerwünscht als Titelzeile für den Autofilter nimmt:
Du aktivierst vor dem 1. Sortieren, wenn die Überschriften noch in Zeile 2 stehen, den Autofilter für die Liste. Dann kannst du sowohl über die Autofilterdropdowns sortieren als auch über den Sortierdialog. Über die Überschriften beim Sortieren brauchst du dir dann keine Gedanken machen.
Alternativ kannst du vom Makro in Zeile 2 eine Zeile mit Hilfsspalten-Titeln einfügen lassen.
Gruß
Franz
Sub Filtern_Spalte_B_und_F()
'Filtert im Autofilter im aktiven Blatt die Daten nach den Werten selektierten Zellen _
in Spalte B und allen nicht leeren Zeilen in Spalte F an
Dim arrFilter(), intJ As Integer, rngSelection As Range, rngZelle As Range
Dim wks As Worksheet
On Error GoTo Fehler
Set wks = ActiveSheet
Set rngSelection = Selection
'Werte in selektierten Zellen in Daten-Array sammeln
For Each rngZelle In rngSelection
If rngZelle.Column = 2 Then
intJ = intJ + 1
ReDim Preserve arrFilter(1 To intJ)
arrFilter(intJ) = rngZelle.Value
End If
Next
If intJ > 0 Then
With wks
'Prüfen, ob Autofilter aktiv/Filter gesetzt
If .AutoFilterMode = True Then
If .FilterMode = True Then .ShowAllData
Else
If Not .Cells(2, 1) = "F_01" Then
For intJ = 1 To .UsedRange.Columns.Count
.Cells(2, intJ) = "F_" & Format(intJ, "00")
Next
End If
.UsedRange.AutoFilter
End If
'Autofilter neu setzen
.AutoFilter.Range.AutoFilter Field:=2, Criteria1:=arrFilter, Operator:=xlFilterValues
.AutoFilter.Range.AutoFilter Field:=6, Criteria1:=""
End With
Else
MsgBox "In Spalte B wurden keine Zellen selektiert!", _
vbOKOnly, "Makro: Filtern_Spalte_B_und_F"
End If
Fehler:
With Err
Select Case .Number
Case 0 'alles OK
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description & vbLf & vbLf _
& "Aktuell selektiertes Objekt ist vermutlich keine Zelle!"
End Select
End With
End Sub