Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1352to1356
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Mit VBA mehr als 2 Kriterien filtern

Mit VBA mehr als 2 Kriterien filtern
31.03.2014 09:38:43
Nik
Einen schönen guten Morgen zusammen,
das Thema habe ich jetzt recht lange gegoogelt, aber ich finde trotzdem keine Lösung :-)
Ich habe einen Autofilter, den ich mit VBA steuern möchte. Ein Kriteriumg wird eingelesen mittels Variable:
Selection.AutoFilter Field:=3, Criteria1:="=*" & name &"*"
was auch sehr gut funktioniert. Daneben, sprich in der gleichen Spalte sollen nun noch 5 weitere Kriterien gesetzt werden, was wie es scheint nur über ein Array funktioniert. Aber das bekomme ich irgendwie nicht hin :-(
ActiveSheet.Range("$A$34:$AC$2926").Selection.AutoFilter Field:=3, _
Criteria1:=Array("ECIF", "NCA", "Attrition")
selbst wenn ich nun noch , Operator:=xlFilter Values hintendran setze.
Wie muss ich hier vorgehen, das er mir in Field3 diese 4 Kriterien setzt? Was mache ich falsch?
Vielen lieben Dank und allen einen guten Start in die neue Woche!
Gruss
Nik

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mit VBA mehr als 2 Kriterien filtern
31.03.2014 11:20:20
Hajo_Zi
Hallo Nik,
benutze den Makrorecorder.
Gruß Hajo

AW: Mit VBA mehr als 2 Kriterien filtern
31.03.2014 11:25:57
Nik
Hallo Hajo,
mit dem habe ich eigentlich angefangen, aber der hat mich nicht weitergebracht, ausser ich habe jetzt etwas falsch gemacht!? Bin jetzt auch schon weitergekommen, sprich mit dem Array. Aber wie ich in das Array nun noch die Variable implementiere, das funktioniert nun noch nicht :-(
Danke und Gruss
Nik

AW: Mit VBA mehr als 2 Kriterien filtern
31.03.2014 11:24:03
Nik
Hallo zusammen,
habe ein wenig ausprobiert und mit dem Array klappt das nun so halbwegs:
Dim a As String
a = Worksheets("All").Range("L29").Value
Dim Filter() As Variant
Filter = Array("Accounts", "ECIF", "NCA", "BiBu", "=*" & a & "*")
ActiveSheet.Range("$A$34:$AC$2926").AutoFilter Field:=3, Criteria1:=Filter, _
Operator:=xlFilterValues
Die ersten 3 Einträge "ECIF", "NCA" und "BiBu" filtert der Code, die Variable a allerdings nichts :-(
Hat mir jemand ein Tip was ich hier falsch mache?
Vielen lieben Dank und Gruss
Nik

Anzeige
AW: Mit VBA mehr als 2 Kriterien filtern
31.03.2014 13:12:08
Nik
Hallo zusammen...
..habe nochmals ein bisschen rumprobiert und jetzt funktioniert es :-)
Filter = Array("Accounts", "ECIF", "NCA", "BiBu", a)
Warum ich da nun in diesem Array die Variable einfach so reinschreiben kann, also so ohne Anführungszeichen etc., weiss ich allerdings nicht. Kann mir da jemand weiterhelfen?
Gruss
Niklas

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

Anzeige
AW: Mit VBA mehr als 2 Kriterien filtern
31.03.2014 15:25:40
Nik
Hi Franz,
vielen Dank für das Feedback :-) Klingt logisch und ist somit eigentlich auch gar nicht so schwer. Aber Hauptsache ist ja jetzt, dass der Code genau das macht was ich möchte :-)
DANKE und schönen Nachmittag..
Gruss
Nik

323 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige