HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Entdecke rund 2 Millionen Excel-Lösungen im
Forumsarchiv
Forumbeitrag
Excel-Version des Fragestellers:
2016
Erfahrungslevel des Fragestellers:
Excel-Profi - VBA gut
Chris
03.06.2026 14:03:45
AW: Gefiltertes Array in Listbox einlesen
Hallo Daniel,

danke für die Rückmeldung.

Bei
ReDim Preserve arrFilter(1 To Treffer, 1 To UBound(arrQuell, 2)) 


erhalte ich "Außerhalb des gültigen Bereichs" und bei

Redim arrFilter(1 to Worksheetfunction.Countif(WS.Columns(1), krit1, ws.Columns(4), krit2), 1 to Ubound(arrQuelle, 2))


falsche Anzahl an Argumenten...

Schaue später nochmal rein.

Gruß
Chris
Als Antwort auf diesen Beitrag
daniel
03.06.2026 13:44:09
AW: Gefiltertes Array in Listbox einlesen
Hi
das stecken zwei Fehler drin.
ein Logikfehler und ein Wissensfehler

der Logikfehler ist, dass du beim Redimensionieren des Arrays die Werte nicht änderst.
hier setzt du die Anzahl der Zeilen nicht neu, sondern wieder auf den ursprünglichen Wert.
falsch:
ReDim Preserve arrFilter(1 To UBound(arrFilter, 1), 1 To UBound(arrQuell, 2))

richtigerweise müsstest du auf die Anzahl der gefilterten Werte redimensionieren und diese zählst du ja in der Variablen Treffer, dahrer
richtig:
ReDim Preserve arrFilter(1 To Treffer, 1 To UBound(arrQuell, 2))


hier würde jetzt aber der Wissensfehler zuschlagen, denn du darfst mit Redim-Preserve immer nur letzte Dimension verändern, die anderen Dimensionen müssen gleich bleiben.
dh in deinem 2-d-Array kannst du nur die Spaltenanzahl verändern, aber nicht die Zeilenzahl.

dh das Anpassen auf die Zeilenzahl könnte dann so aussehen:
ArrFilter = Worksheetfunction.Transpose(ArrFilter)

Redim Preserve ArrFilter(1 to Ubound(arrFilter 1), 1 to Treffer)
ArrFilter = Worksheetfunction.Transpose(ArrFilter)


oder du legst nach der Ermittlung der Daten ein neues Array mit den richtigen Dimensionen an und schaufelst dann die Daten per Schleife rüber.

am elegantesten wäre wahrscheinlich, wenn du die Anzahl der benötigten Zeilen vorab ermittels und ArrFilter gleich auf den richtigen Wert dimensionierst.
das ginge hier am einfachsten mit ZählenWenns (Worksheetfunction.Countif)
Redim arrFilter(1 to Worksheetfunction.Countif(WS.Columns(1), krit1, ws.Columns(4), krit2), 1 to Ubound(arrQuelle, 2))


Gruß Daniel
Folgenachrichten
Antwort auf Beitrag erstellen
Bitte einen Anwendernamen ohne @ eingeben.
Bitte das Passwort eingeben.
Bitte eine gültige E-Mail-Adresse eingeben.
Bitte einen Betreff eingeben.
Weitere Optionen
Aktivieren, wenn die Frage/der Beitrag noch nicht beantwortet wurde und unter Listen > Offene Threads erscheinen soll.
Beispieldatei hochladen

Bitte einen Nachrichtentext eingeben.