94451
11.05.2015, aktualisiert am 12.05.2015
14759
8
0
AutoFilter via VBA in Excel mit einem Array
Hallo,
ich habe folgendes Problem:
ich befülle ein Array aus einer Tabelle... selbstverstänlich filter ich leere Zellen raus, jetzt möchte ich das Array als Filter auf einer Tabelle nutzen, doch leider funktioniert das nicht:
ebenso habe ich es auch schon ohne "Application.Transpose" versucht...
kann mir da jemand helfen?
mein Zellinhalt sieht z.B. so aus: J123*
Vielen Dank
RoadRunner
ich habe folgendes Problem:
ich befülle ein Array aus einer Tabelle... selbstverstänlich filter ich leere Zellen raus, jetzt möchte ich das Array als Filter auf einer Tabelle nutzen, doch leider funktioniert das nicht:
Sub filter()
Dim filter_arr() As String
' Dim tmp_arr() As String
' Dim filter_arr() As String
' Dim tmp_arr() As String
For RowCount = 0 To WorksheetFunction.CountA(Worksheets("email").Range("L14:L21")) - 1
ReDim Preserve filter_arr(i)
filter_arr(i) = CStr(Worksheets("email").Range("L14").Offset(RowCount, 0).Value)
i = i + 1
Next RowCount
' For i = 0 To UBound(filter_arr)
' MsgBox filter_arr(i)
' Next
ActiveSheet.ListObjects("Tabelle1").Range.AutoFilter _
Field:=1, _
Criteria1:=Application.Transpose(filter_arr), _
Operator:=xlFilterValues
End Sub
ebenso habe ich es auch schon ohne "Application.Transpose" versucht...
kann mir da jemand helfen?
mein Zellinhalt sieht z.B. so aus: J123*
Vielen Dank
RoadRunner
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 271722
Url: https://administrator.de/forum/autofilter-via-vba-in-excel-mit-einem-array-271722.html
Ausgedruckt am: 31.01.2025 um 15:01 Uhr
8 Kommentare
Neuester Kommentar
Moin,
es ist so das du wenn du Platzhalter wie * oder ? in deinen Suchwerten verwenden willst, du nur max. 2 Werte als Filter verwenden kannst. Wenn du ein Array mit mehr als 2 Einträgen verwendest werden die Werte immer als Plaintext-String interpretiert, d.h. du kannst darin keine Platzhalter mehr verwenden und es wird dann z.B. nach J123* mit einem Sternchen am Ende gesucht (Das Sternchen ist dabei dann kein Platzhalter mehr).
Gruß jodel32
es ist so das du wenn du Platzhalter wie * oder ? in deinen Suchwerten verwenden willst, du nur max. 2 Werte als Filter verwenden kannst. Wenn du ein Array mit mehr als 2 Einträgen verwendest werden die Werte immer als Plaintext-String interpretiert, d.h. du kannst darin keine Platzhalter mehr verwenden und es wird dann z.B. nach J123* mit einem Sternchen am Ende gesucht (Das Sternchen ist dabei dann kein Platzhalter mehr).
Gruß jodel32
d.h. ich muss mir ein script bauen, das vorher alles "Platzhalter" sucht und dann mit den richtigen werten filtert...
z.B. soSub FilterListObject()
Dim lo As ListObject, arrFilter() As String, rngSearch As Range, c As Range
With ActiveSheet
Set lo = .ListObjects("Tabelle1")
Set rngSearch = lo.DataBodyRange.Columns(1)
i = 0
For Each f In Worksheets("email").Range("L14:L21")
Set c = rngSearch.Find(f.Value, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
ReDim Preserve arrFilter(i)
arrFilter(i) = c.Value
i = i + 1
Set c = rngSearch.FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
Next
lo.Range.AutoFilter
lo.Range.AutoFilter Field:=1, Criteria1:=arrFilter, Operator:=xlFilterValues
End With
End Sub
hilft also nur der Sprung aufs Blatt
Worksheets("userliste 2015-05-08").Select
Nein! Das geht selbstverständlich, ohne Sprung, das war ja nur ein Beispiel!Worksheets("userliste 2015-05-08").Select
Es geht so wie du es gemacht hast.
Du musst also irgendwo einen anderen Fehler eingebaut haben...
Aber ohne Fehlermeldung von deiner Seite lässt sich das schwer erraten "Geht nicht" ist keine Fehlermeldung. Also nutze den Debugger, dafür ist das Ding da!
Gruß jodel32
Worksheets("xxxxxx").ListObjects("Tabellexxxxxx").Range.SpecialCells(xlCellTypeVisible).Copy