Clever-Excel-Forum

Normale Version: VBA: ListObject-Filter
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebes Forum,

hätte nochmal eine Frage bzgl. VBA.

Ich habe eine Listobject und möchte nun in Zeile C3 des gleichen Blattes (Tabelle14) schreiben bzw. eine "Warnung" bekommen, ob ein Filter aktiviert ist oder nicht.

Das habe ich mit folgendem Code (so weit, so gut) bewerkstelligt.

Code:
Private Sub Worksheet_Activate()

'Prüft, ob bei der Tabelle "tbl_Trainingstagebuch_Karate" ein Filter aktiviert ist
    If Tabelle14.ListObjects("tbl_Trainingstagebuch_Karate").AutoFilter.FilterMode Then
      Tabelle14.Range("C3").Value = "Achtung! Ein Filter ist aktiviert."
    End If
End Sub

jetzt habe ich aber zwei Fragen:
1. Die "Warnung" wird mir auch angezeigt, wenn der Filter deaktiviert, also die ListObject nicht gefiltert ist bzw. wurde
2. (wäre ein Goodie): ist es möglich auch in der Warnung anzugeben, welcher Filter (oder zumindest welche Spalte gefiltert wurde)?

Danke für eure Hilfe und schönen Sonntag,
Domi
Das liegt wohl daran das dein Event makro nur bei aktivieren des Arbeitsblattes läuft. 
lege dem Code doch mal ins Worksheet_SelectionChange  das tritt häufiger auf.

Außerdem fehlt ein Else-Zweig deiner Prüfung, in der der Zellinhalt mit der Meldung gelöscht wird.
Hallo Domi,

Code:
Private Sub Worksheet_Activate()
  Dim i As Long
  Dim strF As String
  'Prüft, ob bei der Tabelle "tbl_Trainingstagebuch_Karate" ein Filter aktiviert ist
  With Me.ListObjects("tbl_Trainingstagebuch_Karate").AutoFilter
    If .FilterMode Then
      strF = "Folgende Spalten sind gefiltert:" & vbNewLine
      For i = 1 To .Filters.Count
        If .Filters(i).On Then
          strF = strF & .Parent.ListColumns(i).Name & vbNewLine
        End If
      Next i
      MsgBox strF, vbInformation, "Hinweis"
    End If
  End With
End Sub

Gruß Uwe
Hallo Uwe,

sorry für die späte Rückmeldung, aber hatte erst heute wieder richtig Gelegenheit die Angelegenheit aufzunehmen.

Habe deinen Code implementiert - funktioniert perfekt, danke vielmals.

Auch danke an ralf_b für den Vorschlag

Gruß und schönes Rest-Weekend,

Domi