AW: Mit VBA mehr als 2 Kriterien filtern
31.03.2014 14:56:59
fcs
Hallo Nik,
es ist völlig normal, dass als Elemente eines Arrays auch Variablen angegeben werden können.
Das Filtern von
"*" & a & "*"
im Array funktioniert nicht, weil das Filtern nach einer Liste auf genaue Übereinstimmung der Werte in der Liste mit den Werten in den Zellen der Spalte prüft. "*" funktioniert dann nicht mehr als Wildcard für beliebige Zeichen, sondern als normales Zeichen.
Falls du tatsächlich auf die 4 Festen Werten oder enthält Wert von Variable a filtern möchtest, dann müsste das Array um alle Werte augefüllt werden, die die Bedingungung erfüllen.
Das wird dann relativ kompliziert.
Gruß
Franz
Sub AA_Filtern()
Dim a, arrWerte(), lngFilter, arrNamen, varName, objCol As New Collection
Dim wks As Worksheet, lngZeile As Long
Set wks = ActiveSheet
On Error GoTo Fehler
a = Worksheets("All").Range("L29").Value
lngZeile = 2700
arrNamen = wks.Range("C35:C" & lngZeile)
'Diese Werte immer im Filter einschliessen
objCol.Add "ECIF", "ECIF"
objCol.Add "NCA", "NCA"
objCol.Add "Attrition", "Attrition"
'Suchbegriffe ergänzen zu Filterliste
For Each varName In arrNamen
If LCase(varName) Like "*" & LCase(a) & "*" And varName "" Then
objCol.Add varName, varName
End If
Next
ReDim arrWerte(1 To objCol.Count)
For lngFilter = 1 To objCol.Count
arrWerte(lngFilter) = objCol(lngFilter)
Next
wks.Range("A35:AC" & lngZeile).AutoFilter Field:=3, _
Criteria1:=arrWerte, Operator:=xlFilterValues
Set objCol = Nothing
Erase arrWerte
Fehler:
With Err
Select Case .Number
Case 0
Case 457 'Eintrag ist mit Schlüsselwert schon im Collection-Objekt
Resume Next
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
End Sub