2016-07-06 6 views
1

Ich habe eine Tabelle, die einen Filter auf ein paar Spalten von Daten verwendet. Eine dieser Spalten hat 10 verschiedene mögliche Werte. Ich möchte überprüfen, ob ein bestimmter Filter vorhanden ist - das heißt, nicht nur autofiltermode = true - sondern um tatsächlich zu überprüfen, was der Wert dieses Filters ist. Gibt es eine Möglichkeit, dies in VBA zu tun?Eine Möglichkeit, bestimmte Filterinhalte zu überprüfen

Zum Beispiel, wenn ich sicherstellen möchte, dass der Benutzer nur auf customers schaut, 1 der 10 Werte in meinem Feld. Also ich hoffe ich kann etwas wie if filtervalue = "customers" then sagen.

Außerdem möchte ich keine Zelldaten verifizieren, ich frage, ob es einen Weg gibt, einen Filter zu verifizieren.

Antwort

2

Der folgende Beispielcode überprüft die Kriterienauswahl für die erste Zelle des Bereichs, der den Filter enthält, und den Index der zu überprüfenden Spalte.

Option Explicit 

Sub Test() 
    'first argument is first cell of headers being filtered 
    'second argument is column to check for filter criteria 
    Debug.Print GetCriteria(Sheet1.Range("A1"), 3) 
End Sub 

Function GetCriteria(rng As Range, lngFilterIndex As Long) As String 

    Dim strCriteria As String 
    Dim objFilter As AutoFilter 
    Dim lngCriteriaCount As Long 
    Dim lngCounter As Long 

    Set objFilter = rng.Parent.AutoFilter 

    ' no autofilter 
    If objFilter Is Nothing Then 
     GetCriteria = "" 
     Exit Function 
    End If 

    ' autofilter but no selection 
    If Not objFilter.Filters(lngFilterIndex).On Then 
     GetCriteria = "" 
     Exit Function 
    End If 

    ' iterate criteria 
    strCriteria = "" 
    lngCriteriaCount = objFilter.Filters(lngFilterIndex).Count 
    If lngCriteriaCount = 1 Then 
     strCriteria = objFilter.Filters(lngFilterIndex).Criteria1 
    Else 
     For lngCounter = 1 To objFilter.Filters(lngFilterIndex).Count 
      strCriteria = strCriteria & objFilter.Filters(lngFilterIndex).Criteria1(lngCounter) 
     Next lngCounter 
    End If 

    GetCriteria = strCriteria 

End Function 
Verwandte Themen