Anzeige
Archiv - Navigation
900to904
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
900to904
900to904
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Änderung des AutoFilters abfangen

Änderung des AutoFilters abfangen
30.08.2007 08:56:00
alexvb
Hallo,
ich suche nach einer Möglichkeit, die Änderung des AutoFilters auf eine Tabelle durch den Benutzer abzufangen - sprich bei diesem Ereignis per Makro eine Aktion auszuführen.
Konkret habe ich ein Makro, das bei einer Aktion auf "Blatt 1" den Autofilter auf eine Tabelle mit 13 Spalten im "Blatt 2" setzt. Das Makro wählt auf Basis der Benutzereingabe die korrekten Spalten (2) und Werte (2) aus und schreibt diese Werte in die Zellen "Filterausgabe" auf "Blatt 2", so dass der Benutzer weiss, wonach das Makro den Filter eingestellt hat.
Wenn nun der Benutzer in dieser Tabelle weiterarbeiten möchte und den Autofilter ändert bzw. anders setzt, möchte ich, dass die Inhalte der Zellen "Filterausgabe" gelöscht werden. Dazu muss ich jedoch irgendwie per VBA erkennen, dass der Benutzer was am Autofilter ändert. Hat jemand eine Idee, wie das funktionieren könnte?
Gruß,
/Alex vB

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Änderung des AutoFilters abfangen
30.08.2007 13:52:54
Kl@us-M.
Hi Alex,
verwende in einer (ausgeblendeten) Zelle die Funktion =TEILERGEBNIS(), dann kannst Du eine Änderung des AutoFilters mit dem Worksheet_Calculate-Ereignis abfragen ...

Gruss aus dem wilden Hunsrück


________Klaus-Martin________

AW: Änderung des AutoFilters abfangen
30.08.2007 15:30:00
fcs
Hallo Alex,
als Ergänzung zur Information von Klaus hier noch eine Umsetzung, wie man dann prüfen kann ob sich die Autofiltereinstellungen geändert haben.
Dabei stehen in B2:B3 die Spaltennummern die dein Makro setzt und in C2:C3 die zugehörigen Werte. Das Beispiel deckt nur die einfache Auswahl von Werten im Autofilter ab. Änderungen benutzerdefinierter Filter-Einstellungen werden ggf. nicht korrekt erkannt. Das Makro fügst du im VBA-Editor unter deinem Blatt2 ein.
Damit es funktioniert muss du irgendwo auf dem Blatt eine Formel plazieren, die auf eine Zelle im gefilterten Bereich zugreift. z.B. =WENN(E6=E6;"";"") , wenn E6 die Zeile unterhalb der Titelzeile des Filterbereichs ist.
Gruß
Franz

Private Sub Worksheet_Calculate()
' MsgBox "Testcalculate"
'Filteränderungen checken
Dim wks As Worksheet, varFilter As Filter, boloeschen As Boolean
Set wks = Me
With wks
If Not (IsEmpty(.Range("C2")) And IsEmpty(.Range("C3"))) Then
For i = 1 To wks.AutoFilter.Filters.Count
Set varFilter = .AutoFilter.Filters(i)
boloeschen = False
Select Case i
Case .Range("B2").Value 'Spalte 1. Filter
If varFilter.On = False Then
boloeschen = True
Else
If varFilter.Criteria1  "=" & .Range("C2").Value Then
'          If varFilter.Criteria1  .Range("C2").Value Then
'anderer Filterwert als vom Makro wurde gesetzt
boloeschen = True
End If
End If
Case .Range("B3").Value 'Spalte 2. Filter
If varFilter.On = False Then
boloeschen = True
Else
If varFilter.Criteria1  "=" & .Range("C3").Value Then
'          If varFilter.Criteria1  .Range("C3").Value Then
'anderer Filterwert als vom Makro wurde gesetzt
boloeschen = True
End If
End If
Case Else
If varFilter.On = True Then
'anderer Filter als vom Makro wurde gesetzt
boloeschen = True
End If
End Select
If boloeschen = True Then
Application.EnableEvents = False
'inhalte im Bereich mit Filterinformationne löschen
Me.Range("B2:C3").ClearContents
Application.EnableEvents = True
Exit For
End If
Next
End If
End With
End Sub


Anzeige
AW: Änderung des AutoFilters abfangen
31.08.2007 13:43:00
alexvb
Hallo Franz, hallo Klaus-Martin,
vielen Dank für die hilfreichen und ausführlichen (Franz!) Tips. Ich werde jetzt in einer ersten Ausbaustufe erstmal nur das Worksheet_Calculate Ereignis dazu benutzen, bei den Spalten- und Werte-Zellen die Schriftfarbe auf die Hintergrundfarbe zu setzen und eine MsgBox auszugeben. Sollte von meinen User da noch mehr gefordert werden, werde ich sicher auf Franz' Code zurückgreifen.
Gruß,
/Alex vB

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige