Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
540to544
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
540to544
540to544
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA Autofilter Index auslesen

VBA Autofilter Index auslesen
08.01.2005 14:07:09
John
Hallo ihr alle,
ich suche nach einem Befehl, der im Autofilter den wert (Indexwert?) des Filters ausliest.
Am praktischen Beispiel:
In der Spalte D steht mein Cursor. Diese Spalte hat einen Autofilter.
z.B. "Selection.Autofilter.Filters(3)" oder auch "Selection.Autofilter Field:=3"
Ich suche nun einen Befehl, mit dem ich diese "3" auslesen kann.
Wäre toll, wenn mir jemand helfen könnte.
Gruß
John

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Autofilter Index auslesen
Boris
Hi John,
ohne jegliche Fehlerabfragen - nur quick and dirty:
Option Explicit

Sub autofilter_auslesen()
Dim af As AutoFilter, i As Integer
Set af = ActiveSheet.AutoFilter
With af
For i = 1 To .Filters.Count
If .Filters(i).On Then
MsgBox "Filter " & i & " ist aktiv."
End If
Next i
End With
End Sub

Grüße Boris
AW: VBA Autofilter Index auslesen
John
Hallo Boris,
danke für deine Antwort.
Diese Möglichkeit habe ich bereits gekannt, trotzdem danke.
Meine Frage zielte auf ein anderes Problem:
Ich habe in der Spalte D den Cursor stehen. Das Makro soll nun den Wert des Filters, also wie bereits gesagt die 3 bei z.B. Autofilter.Filters(3) zurückgeben.
Ich benötige diesen Wert um ein VBA zu schreiben, das sehr flexibel die Daten eines Filters aufbereitet und als neue Datei ausgibt. Problem dabei, dass die Filter auf immer wider neue Spalten, sprich Filter-Nummern zugreifen muss. Steht der Cursor in Spalte D, soll er den Wert des Filters in Spalte D zurück geben, steht der Cursor in Spalte F, soll er den Wert dieses Filters zurück geben.
Du verstehtst was ich meine?
Nochmals Danke
John
Anzeige
AW: VBA Autofilter Index auslesen
Kurt
Hallo Leute,
habe da was gefunden.
Option Explicit

Sub FilterFinden()
Dim i As Long, u As Long, z As Integer, t As Integer, r As Integer
Dim str_ausgabe As String
Dim ws As Worksheet
Dim FeldArray()
Set ws = Worksheets(1)
'Prüfen, ob überhaupt ein Autofilter gesetzt ist
If ws.AutoFilterMode = True Then
Else
MsgBox "Kein AutoFilter gefunden!", vbInformation, "Achtung"
Exit Sub
End If
'Der Array wird für die Datenaufnahme vorbereitet. Die Größe ergiebt sich aus dem Bereich
'(columns und rows) des Auofilter's
ReDim Preserve FeldArray(ws.AutoFilter.Range.Rows.Count, ws.AutoFilter.Range.Columns.Count)
'Variable u beinhaltet die Anzahl der Spalten des Autofilterbereiches
For u = 1 To ws.AutoFilter.Range.Columns.Count
r = 1
'Variable i beinhaltet die Anzahl der Reihen des Autofilterbereiches
For i = 1 To ws.AutoFilter.Range.Rows.Count
'Der erste Spaltenwert eines Filters wird ohne Prüfung in den Array eingetrage,
'da dieser noch nicht Doppelte sein kann
If i = 1 Then
FeldArray(i, u) = ws.AutoFilter.Range.Cells(i, u)
Else
For z = 1 To i - 1
'Nun wird die aktuelle zelle des Autofilterbereiches mit den schon im Array eingetragenen Werten verglichen
'Ist er gleich, so wird die Sprungmarke weiter angesteuert
'ist er nicht gleich, so wird der Array um diesen Datensatz erweitert
If ws.AutoFilter.Range.Cells(i, u) = FeldArray(z, u) Then
GoTo Weiter
End If
Next z
r = r + 1
'array wird erweitert
FeldArray(r, u) = ws.AutoFilter.Range.Cells(i, u)
Weiter:
End If 'i=then
Next i
Next u
'Die Daten werden in einen String gepackt und in einer MsgBox angezeigt
For i = 1 To ws.AutoFilter.Range.Columns.Count
str_ausgabe = str_ausgabe & Chr(13) & i & "Spalte:"
For u = 1 To ws.AutoFilter.Range.Rows.Count
str_ausgabe = str_ausgabe & " " & FeldArray(u, i)
Next u
Next i
MsgBox str_ausgabe, vbInformation, "Autofilterergebnisse"
End Sub

...nd Tschüss Kurt
Anzeige
AW: VBA Autofilter Index auslesen
th.heinrich
hallo John,
dieser Code kopiert die gefilterten werte und listet in den spalten die Filterkriterien auf.
Option Explicit

Sub FilterCriteria()
Dim intRow As Integer, intCol As Integer
intRow = Range("A1").CurrentRegion.Rows.Count + 2
intCol = 1
Do Until IsEmpty(Cells(1, intCol))
With ActiveSheet.AutoFilter.Filters(intCol)
If .On Then
Cells(intRow, intCol).Value = .Criteria1
End If
End With
intCol = intCol + 1
Loop
Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy _
Cells(intRow + 1, 1)
End Sub

von Hans
gruss thomas
Anzeige
AW: VBA Autofilter Index auslesen
John
Danke an alle,
ihr gebt euch wirklich sehr viel Mühe.
Ihr seid einfach Spitze :-))
John

120 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige