Hilfskrücke gebaut, Problem gelöst
Zunächst vorneweg: Mehrere Quellen im Internet sagen aus, dass eine Änderung der Autofilterung selbst kein auswertbares Ereignis bewirkt. Schade.
Hilfskrücke: Auswertung über ein Change-Ereignis, das durch "irgendeine" Funktion angesprochen wird, die wiederrum durch den Autofilter beeinflusst werden kann. Hört sich kompliziert an, ist es aber im Endeffekt gar nicht
Hier der Trick: Die Funktion TEILERGEBNIS erlaubt es, eine begrenzte Auswahl von Funktionen auf Listen anzuwenden mit bzw. ohne Berücksichtigung ausgeblendeter Werte der Liste. Da ein Autofilter Zeilen ausblendet und nur Inhalte gleicher Art zur Anzeige bringt, kann man sich hieraus über Teilergebnis den Mittelwert ausschließlich der angezeigten Werte berechnen lassen. Der ist aber gleich den Werten, da ja aufgrund der Filterung nur gleiche Werte zur Anzeige kommen. So lässt sich dieser Mittelwert zur Programmsteuerung einsetzen. Die Berechnung von Teilergebnis ist zudem ein eindeutig auswertbares Calculate-Ereignis. Und hier schließt sich der Kreis. Wir haben alle Werkzeuge zur Hand...
Formel in A1, 101 bedeutet "Mittelwert nur der eingeblendeten Zeilen", zu filternder Bereich B1:B5000
Code:
=TEILERGEBNIS(101;B1:B5000)
VBA-Schnipsel der Tabelle
Code:
Private Sub Worksheet_Calculate()
Application.ScreenUpdating = False
' Zelle A1 enthält hier das Ergebnis der TEILERGEBNIS-Formel
' über den gesamten zu filternden Bereich
If Cells(1, 1) = 1 Then
' Programmschritte für Autofilter-Auswahl 1
ElseIf Cells(1, 1) = 2
' Programmschritte für Autofilter-Auswahl 2
ElseIf Cells(1, 1) = 3
' Programmschritte für Autofilter-Auswahl 3
Else
' Programmschritte für Autofilter aus
End If
Application.ScreenUpdating = True
End Sub
Wer so was eleganter lösen kann, sei herzlich gebeten, sich zu melden
edit:
Logikfehler gelöscht
------------------
Seit Pro/E Version 1 dabei, auwei...
[Diese Nachricht wurde von carsten-3m am 11. Jun. 2010 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP