gestern Abend bin ich auf ein VBA-Problem gestoßen. In einer formatierten Tabelle (ListObject) soll in Spalte 3 ein Autofilter gesetzt werden, der mehrere Kriterien umfasst. Diese Kriterien werden via VBA Funktion aus einer zweiten formatierten Tabelle ermittelt und zu einem kleinen Array zusammengefügt. Eigentlich eine einfache Sache und hier mein Schema dazu mit Demo hier: https://www.herber.de/bbs/user/157473.xlsm
Sub dyn_filter_array()
Dim tbl As ListObject
Dim vardat As Variant
Dim tx As String
Dim i As Integer
Set tbl1 = Tabelle1.ListObjects("Tabelle1")
Set tbl2 = Tabelle2.ListObjects("Tabelle2")
For i = 3 To 1 Step -1
tx = tx & """" & Application.WorksheetFunction.Large(tbl2.ListColumns(1).DataBodyRange, i) & """, "
Next i
tx = Left(tx, Len(tx) - 2)
Debug.Print tx
vardat = Array(tx)
'tbl1.Range.AutoFilter Field:=3, Criteria1:=Array("8", "9", "10"), Operator:=xlFilterValues 'funktioniert (statisch)
tbl1.Range.AutoFilter Field:=3, Criteria1:=vardat, Operator:=xlFilterValues 'funktioniert nicht obwohl dyn. und statischer String identisch ...
End Sub
Anomalie/Problem: Wenn ich die Kriterien per Hand in den Code setze, also statisch einzeln eintrage, wird der Autofilter richtig gesetzt. Mit dem Array, welches laut Direktfenster exakt den selben String aufweist, wird die komplette Tabelle weggefiltert und kein einziges Kriterium richtig übernommen.Ich vermute, dass der Array-String einen anderen Syntax braucht, aber ich habe schon so viel probiert (mit Kommata, mit Semikolon, mit Anführungsstriche Einzelwert, um alle Werte etc. ...). Wo liegt der Fehler?
Danke vorab und viele Grüße
Kalle