Thema Datum  Von Nutzer Rating
Antwort
29.03.2017 14:23:05 itziwunderlich
NotSolved
29.03.2017 15:08:02 itziwunderlich
Solved
Rot VBA Funktion zum Filterkriterien auslesen funktioniert nicht mehr
29.03.2017 15:28:46 BigBen
NotSolved
29.03.2017 15:36:07 BigBen
NotSolved
29.03.2017 15:42:54 BigBen
NotSolved

Ansicht des Beitrags:
Von:
BigBen
Datum:
29.03.2017 15:28:46
Views:
597
Rating: Antwort:
  Ja
Thema:
VBA Funktion zum Filterkriterien auslesen funktioniert nicht mehr

Hallo,

bei einer simplen Beispiel-Tabelle, bestehend aus zwei Feldern und einem Kriterium wurde fogendes festgestellt:

Wenn der Befehl mit einer Verweis eine ene einzelne Zelle im Feldnamen gestartet wird, dann funktioniert die Funktion wie gewünscht. Es wird allerdings nur das erste Kriterium zurückgeliefert. Weitere vorhandene Kriterien werden ignoriert.

Die Funktion liefert nur dann ein Ergebnis, wenn die Variable rng auf eine einzelne Zelle verweist. (Im Beispiel entweder auf A1 oder B1)

Getestet mit Excel 2013:

Function FilterKriterien(rng As Range) As String
 
    'Funktion um die Filterkriterien auszulesen
    'Gibt an nach welchem Kriterium gefiltert wurde
     
    Dim F As String
    Dim flt As Filter
    F = ""
    'On Error GoTo Finish
     
    With rng.Parent.AutoFilter
        If Intersect(rng, .Range) Is Nothing Then GoTo Finish
            Set flt = .Filters(rng.Column - .Range.Column + 1)
            With .Filters(rng.Column - .Range.Column + 1)
                If Not .On Then GoTo Finish
                F = .Criteria1
            End With
        End With
Finish:
    FilterKriterien = F
End Function

Sub TESTFilter()
    Dim rng As Range
    Set rng = ActiveWorkbook.Worksheets(1).Range("A1")
    Debug.Print FilterKriterien(rng)
End Sub

Tabelle:

Name Zahl
Feder 56
Kanne 5
Haus 8
Sofa 4
Stuhl 9
Holz 15
Huhn 40

In der ersten Zeile sind Autofilter gesetzt.

Fallsalle Filter ausgelesen werden sollen, kann diese abgeänderte Funktion verwendet werden:

Function FilterKriterien(rngNames As Range) As String
 
    'Funktion um die Filterkriterien auszulesen
    'Gibt an nach welchem Kriterium gefiltert wurde
     
    Dim F As String, Fitem As String
    Dim flt As Filter
    Dim rng As Range
    F = ""
    'On Error GoTo Finish
    For Each rng In rngNames.Cells
        With rng.Parent.AutoFilter
            If Intersect(rng, .Range) Is Nothing Then GoTo Finish
            Set flt = .Filters(rng.Column - .Range.Column + 1)
            With .Filters(rng.Column - .Range.Column + 1)
                If .On Then
                    Fitem = rng.Value
                    Fitem = Fitem & .Criteria1
                    If flt.Count > 1 Then
                        Fitem = Fitem & " AND " & .Criteria2
                    End If
                    
                    If Not F = "" Then
                        F = F & IIf(flt.Operator = xlAnd, " AND ", " OR ")
                    End If
                    F = F & Fitem
                End If
            End With
        End With
    Next
Finish:
    FilterKriterien = F
End Function

Sub TESTFilter()
    Dim rng As Range
    Set rng = ActiveWorkbook.Worksheets(1).Range("A1:B1")
    Debug.Print FilterKriterien(rng)
End Sub

In diesem Fall wird Beispielsweise folgende Ausgabe beim Aufruf des Befehls TESTFilter geliefert:

Name=*e* OR Zahl>=5

Hierbei wird vorausgesetzt, dass auch zuvor tatsächlich ein entsprechender Filter gesetzt wurde.

LG, BigBen


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
29.03.2017 14:23:05 itziwunderlich
NotSolved
29.03.2017 15:08:02 itziwunderlich
Solved
Rot VBA Funktion zum Filterkriterien auslesen funktioniert nicht mehr
29.03.2017 15:28:46 BigBen
NotSolved
29.03.2017 15:36:07 BigBen
NotSolved
29.03.2017 15:42:54 BigBen
NotSolved