Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1624to1628
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
Inhaltsverzeichnis

Autofilter ( Suche ) auslesen

Autofilter ( Suche ) auslesen
15.05.2018 13:23:16
udo
Hallo Forum,
hätte noch eine Frage zum Auslesen der Autofilter Kriterien
Über folgenden Code aus der Recherche kann ich einzelne Positionen des
Autofilters auslesen, sprich wenn ich dann aus der Liste einen vorgegebenen
Eintrag auswähle, kann ich ihn damit dann anzeigen lassen
( in irgendeiner Zelle dann noch = GetFilter(1) dann hab ich dort diese Auswahl stehen ).
Function GetFilter(intSpalte As Integer) As String
Application.Volatile
If ActiveSheet.FilterMode And ActiveSheet.AutoFilterMode Then
If ActiveSheet.Autofilter.Filters(intSpalte).On Then
GetFilter = ActiveSheet.Autofilter.Filters(intSpalte).Criteria1
End If
End If
End Function
Nun mein Wunsch - sofern überhaupt möglich , im Autofilter gibt es ja das Suchfeld, wo man einen Eintrag tätigen kann, und anhand des Eintrages fängt der Autofilter schon während der Eingabe dort an zu filtern von Buchstabe zu Buchstabe bleiben dann immer weniger Spalten-Inhalte zu sehen.
Würde ich da also zB. nur Auto eingeben , würde demnach meine Liste mit allen
Inhalten in denen teilweise auto drin vorkommt übrigbleiben , also auch automatik, autonom etc.
Alle haben schließlich die SUCHE " Auto " also gemeinsam, und genau das hätte ich gerne in einer Zelle stehen die Suchbedingung - nicht irgendein Kriterium das schon in der Auflistung final drin steht und das ich auch nur einzeln dann zeigt.
Sondern eben den Text den ich zuvor ins Suchfeld dort eingab damit danach dann letztlich gefiltert wird.
kann man .Criteria1 irgendwie gegen .Search ... austauschen damit das ginge ?
Hab ihr eine Idee ?
LG udo

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Autofilter ( Suche ) auslesen
16.05.2018 07:47:17
fcs
Hallo Udo,
den Wert in dem Eingabefeld kann man nicht per VBA auswerten, denn Excel verhält sich nach OK so als ob man die Werte von Hand markiert hätte. D.h., es wird eine Werteliste als Filter verwendet, wenn mehr als 2 Einträge selektiert sind.
Wenn du unbedingt den Suchwert angezeigt haben möchtest, dann musst du via "Textfilter" und "enthält" filtern.
Hier das Makro etwas erweitert.
Als Parameter wird nicht die Nummer der Spalte im Auto-Filter übergeben sondern die Zelle unter dem Spaltentitel im Filterbereich!
So ist die Function variabler und es werden korrekt Werte berechnet, auch wenn ein anderes Blatt aktiv ist.
Gruß
Franz
Function GetFilter(Zelle As Range) As String
'als Zelle die Zelle unterhalb des Spaltentitels wählen
Application.Volatile  'diese Zeile kann man auch weglassen
Dim wks As Worksheet, intSpalte As Integer, varOp, strOp As String, objFilt As Filter
On Error GoTo Fehler
Set wks = Zelle.Parent
With wks
If .AutoFilterMode Then
If .FilterMode Then
intSpalte = Zelle.Column - .AutoFilter.Range.Column + 1
Set objFilt = .AutoFilter.Filters(intSpalte)
With objFilt
If .On Then
varOp = .Operator
Select Case varOp
Case 0
strOp = .Criteria1
Case 1 'xlAnd
strOp = .Criteria1 & " UND " & .Criteria2
Case 2 'xlOr
strOp = .Criteria1 & " ODER " & .Criteria2
Case 7 'xlFilterValues
strOp = "Werteliste"
Case 9 'xlFilterFontColor
strOp = "Schriftfarbe"
Case 8 ' xlFilterCellColor
strOp = "Zellfarbe"
Case Else
strOp = "?"
End Select
GetFilter = strOp
Else
GetFilter = "(Alle)"
End If
End With
End If
Else
GetFilter = ""
End If
End With
Exit Function
Fehler:
GetFilter = ""
End Function

Anzeige
melde mich später noch dazu ...
16.05.2018 12:47:37
udo
Grüße dich Franz,
Danke dir sehr für deine Hilfe, muss heute Vormittag nur leider an einer anderen Sache arbeiten,
daher kann ich mich deinem Ansatz erst etwas später widmen.
Gebe dir aber auf alle Fälle Rückmeldung. Werde es nachher mal versuchen mit einzubauen.
Vielen lieben Dank schon einmal !
Gruß udo
AW: melde mich später noch dazu ...
17.05.2018 12:47:30
udo
Grüß dich Franz, komm jetzt erst dazu deinen Code mit einzubinden.
Habe es eben mal in ein Modul gepackt und in einer Zelle auf dem Tabellenblatt "Kunden" dann die Formel =GetFilter(1) eingegeben , denke 1 für den ersten Filter ( bei mir Spalte H ).
Mein Filterbereich ist H81:AP15000 ( und die Zeile 81 ist immer ausgeblendet ) diese dient als
Formatierungsbasis der Zellformate u bed. Formatierung.
Wenn sich mal die Formatierung in der Auflistung verhakt, dann lösche ich zunächst alle Zellformate von 82:15000 und Kopiere dann die Formation aus 81 und übertrage Sie auf den gesamten Bereich abwärts.
bekomme aber #Wert als Ergebnis ...
Der Teil im Code mit "Werteliste", "Schriftfarbe" , "Zellfarbe" , "?" sagt mir nichts, muss ich da noch was an meine Tabelle anpassen ?
LG udo
( schau später nochmal rein, danke dir sehr )
Anzeige
AW: melde mich später noch dazu ...
17.05.2018 14:01:39
fcs
Hallo Udo,
ich hatte ja geschrieben, dass du als Parameter nicht mehr die Nummer der Spalte im Autofilterbereich (bei dir 1) sondern die Zelle unterhalb des Spaltentitels des Autofiltersbereichs angibts also zum Beispiel H81 wenn die Spaltentitel in Zeile 80 stehen.
Gruß
Franz
Ok, verstanden ... bekomme einen Fehler ...?
17.05.2018 14:11:47
udo
Grüß dich Franz, danke dass du nochmals reinschaust.
Habe dich nun glaube ich auch verstanden.
Ok, Habe in irgendeiner Zelle ( I77 ) also =GetFilter(H81).
Es spingt die Fehlmeldung an " Fehler beim Kompilieren " Ein Modul hat einen unzulässigen Typ
oben in der Deklarierung leuchtet "strOp As String" blau ?
sagt dir das was ?
Anzeige
und noch was merkwürdiges , jetzt tut es gerade ?
17.05.2018 14:25:31
udo
... HAbe eben die Fehlermeldung mit ok Bestätigt, anschl. zeigte mir die Formel jedoch den Suchbegriff dann gleich an ?
Scheint jetzt zu funktionieren ...
Ich tüftele mal noch etwas dran rum ...
Kennst du zufällig die Anweisung wie man das Autofilter-Textfeld Fenster direkt aufruft ?
Dann könnte ich für meine Damen u Herren Bediener ein MAkro setzen das Sie dann direkt ausführen können und nur noch den Suchtext eingeben müssten. Das wäre dann oberperfekt im Zusammenspiel mit deinem Ansatz der Textsuche-Auswertung.
Lieben Dank für deine freundliche Unterstützung !

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige