88. Autofilterspalte farblich hervorheben

Aufgabenstellung:

In dieser Beispieldatei geht es um das Anzeigen welche der Spalten gefiltert wurde. Es wird in der Überschrift farblich angezeigt, welche die gefilterte Spalte ist.

Dieses Beispiel steht auch als Beispieldatei zum Download zur Verfügung.
In der Zipdatei befindet sich eine xls-Datei für Excel 2000 - 2003 und eine xlsm-Datei für Excel 2007.


Realisiert wurde das durch eine Formellösung.

In der Beispieldatei stehen in Zeile 2 von Spalte B bis F die Überschriften und darunter die Daten. In der Spalte in Zeile 2 wird die Zelle farblich markiert, dessen Spalte gefiltert wurde.
Möglich wird dieses, weil beim Aktivieren des Tabellenblattes in Zelle A1 (kann auch in jeder anderen Zelle gemacht werden) die Formel

=ZUFALLSZAHL()

eingetragen wird. Dadurch ist es dann möglich, die gefilterte Spalte bei jedem Calculate-Ereignis, das durch das Filtern ausgelöst wird, abzufragen.

Der Code ist in das VBA-Projekt der Tabelle, in dem er wirken soll, einzufügen


Option Explicit


Private Sub Worksheet_Activate()
'Beim Aktivieren des Blattes in Zelle A1 die Formel
'=ZUFALLSZAHL() eintragen. Wird benötigt, weil ein Calculate
'Ereignis hervorgerufen werden muss um den Zustand des Autofilters
'zu ermitteln
Range("A1").FormulaLocal = "=ZUFALLSZAHL()"
End Sub

Private Sub Worksheet_Calculate()
Dim As Integer
'Alle Hintergrund- und Schriftfarben in Bereich B2:F2 wieder zurücksetzen
With Range("B2:F2")
.Interior.ColorIndex = xlNone
.Font.ColorIndex = 0
End With

'Schleife zum Finden, in welcher Spalte der Filter gesetzt wurde
For i = 2 To AutoFilter.Filters.Count
'Wenn der Autofilter in der Spalte, die in dem aktuelle
'Schleifendurchgang angesprochen wird, aktiv ist, dann...
If AutoFilter.Filters(i).On Then
'...Zellenhintergrund der 1. Zelle in der gefilterten Spalte in
'Grün und Schrift in weiß ändern
With Cells(2, i + 1)
.Interior.ColorIndex = 10
.Font.ColorIndex = 2
End With
End If
Next
End Sub

Private Sub Worksheet_Deactivate()
'Beim Verlassen des Blattes, die Zelle A1 leeren
Range("A1").ClearContents
End Sub

 


Dieses Beispiel wurde unter den in der Tabelle aufgeführten Versionen getestet.

  A B C D E
1        

2

 

Excel - Version

Getestet

 
3      
4   Excel 2007 12.0 a  
5   Excel 2003 11.0 a  
6   Excel 2002 10.0 a  
7   Excel 2000 9.0 a  
8   Excel 97 8.0    
9          
10   Anzahl der Downloads:

 
11          
12   Dieses Beispiel wurde bereits  x aufgerufen.  
13    
14          

 


> Beispieldatei herunterladen <

  Sollten beim Ausführen der Beispieldatei Fehler auftreten, bitte ich darum, mir eine Mail mit der Fehlerbeschreibung an fehler@excelbeispiele.de zu schicken.
Danke!

 Möchten Sie www.excelbeispiele.de in Ihre Favoriten aufnehmen? Dann Klicken Sie hier.
 

Kontakt:

letzte Aktualisierung am 06.01.2008

© 2004 - Copyright Oliver Scheckelhoff,
All Rights Reserved