Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA: ListObject-Filter
#1
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
Antworten Top
#2
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.
Antworten Top
#3
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
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • HAMRacer44
Antworten Top
#4
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste