AW: Autofilter mit VBA
02.12.2011 07:41:42
fcs
Hallo Hermann,
die Filterwerte der Spalte kann man in einer For-Next-Schleife in eine sogenannte Collection einsammeln. Durch festlegen des Key-Parameters werden alle Werte nur einmal eingelesen.
In einer 2. For-Next-Schleife werden dann die Werte der Collection als Filterwerte setzen.
Wie dann das Kopieren der jeweils gefilterten Werten optimal ausgeführt werden kann ist aus deinem Code ja nicht ersichtlich.
Ich hab es mal so eingerichtet, dass eine neu Arbeitsmappe angelegt wird und die Werte jedes Filters in ein eigenes Blatt kopiert werden.
Gruß
Franz
Sub aaTest()
Dim objRange As Range, objZelle As Range, objRangeFilter As Range
Dim wksAktiv As Worksheet, wbZiel As Workbook, wksZiel As Worksheet
Dim objCollection As New Collection, intI As Integer, boolAdd As Boolean
On Error GoTo Fehler
Set wksAktiv = ActiveSheet
'Prüfen, ob Autofilter schon aktiv
If wksAktiv.AutoFilterMode = True Then
If wksAktiv.FilterMode = True Then
wksAktiv.ShowAllData
End If
Else
Selection.AutoFilter
End If
'Autofilterbereich der aktiven Tabelle
Set objRangeFilter = wksAktiv.AutoFilter.Range
'Sortierte Liste ohne Doppelte der Werte in Spalte 7 des Autofilter-Bereichs erstellen
Set objRange = wksAktiv.AutoFilter.Range.Columns(7)
For Each objZelle In objRange.Cells
If objZelle.Row wksAktiv.AutoFilter.Range.Row Then
If objCollection.Count = 0 Then
objCollection.Add objZelle.Value, Key:=CStr(objZelle.text)
Else
For intI = 1 To objCollection.Count
If objZelle.Value