Ich will den gesetzten Autofilter aus meiner Tabelle auslesen und ihn auf einem anderen Blatt ausgeben (sobald sich der Filter ändert, soll sich auch der Text der Zelle ändern)
Ich hatte schon diese tolle Funktion hier gefunden:
http://www.excel-inside.de/vba-loesungen/zellen-a-bereiche/937-autofilter-gefilterte-datensaetze-auslesen
Nun habe ich allerdings das Problem dass ich es nicht auf meine Bedürfnisse ändern kann. Der Benutzer muss bei dieser Formel immer den Bereich wählen. Dies möchte ich nicht. Der Bereich beginnt immer in Zeile 10 und das Ende ist Variabel, daher wollte ich mit der Variablen end_row arbeiten. Die Hauptfrage ist auch wie ich die Formel ändere, sodass das "rngBereich As Range" nicht mehr vorhanden ist. Egal was ich bisher versucht hatte zu ändern, es funktioniert nicht.
Hier erstmal der Code:
Public Function FILTERERGEBNIS(rngBereich As Range, _
Optional trenner = vbLf) As String
'Auslesen der gefilterten Daten
'Parameter 1: Zellbereich
'Parameter 2: Startzeile des Datenbereichs (ohne Überschrift)
'Parameter 3: Optional - Individueller Daten-Trenner
'Dimensionierung der Variablen
Dim varArr As Variant
Dim objDict As Object
Dim intI As Integer
Dim lngL As Long
Dim lngStartZ As Long
Dim end_row As Integer '*** von mir hinzugefügt
end_row = Cells(9, 1).End(xlDown).Row '*** von mir hinzugefügt
'Bereich übergeben
varArr = rngBereich
'varArr = Range("A10:A" & end_row) *** mein Vorschlag
'Objekt definieren
Set objDict = CreateObject("Scripting.Dictionary")
'Startzeile der Liste aus Bereichsangabe auslesen
lngStartZ = rngBereich(1, 1).Row
'***Start ist immer in Zeile 10***
'Datenbereich durchlaufen
For intI = LBound(varArr, 2) To UBound(varArr, 2)
For lngL = LBound(varArr, 1) To UBound(varArr, 1)
'Prüfen, ob Zeile eingeblendet ist
If Cells(lngL + lngStartZ - 1, 1).Rows.Hidden = False Then
'Inhalt dem Dictionary-Objekt übergeben
objDict(varArr(lngL, intI)) = 0
End If
Next
Next
'Inhalte zusammensetzen und der Funktion zurückgeben
FILTERERGEBNIS = Join(objDict.keys, trenner)
End Function
Dankeschön schonmal!