[b]Option Explicit
Sub Auofilter_aktive_Zelle()
If IsEmpty(ActiveCell) = False Then _
Range("A1:C" & Range("C65536").End(xlUp).Row).AutoFilter Field:=ActiveCell.Column, Criteria1:=ActiveCell
End Sub
[/b][b]Option Explicit
'Globale Variablen deklarieren. Global deswegen, damit man im gesamten VBA-Projekt _
auf die Variablen und deren gespeicherten Werte zurückgreifen, um den aktuell _
gespeicherten Wert zu ermitteln, kann.
Public iFilterRow As Integer
Public iFilterColumn As Integer
Sub Auofilter_aktive_Zelle()
'Aus der aktiven Zelle die Zeile ermitteln und in Variable "iFilterRow" schreiben
iFilterRow = ActiveCell.Row
'Aus der aktiven Zelle die Spalteindexzahl ermitteln und in Variable "iFilterRow" schreiben
iFilterColumn = ActiveCell.Column
'Wenn die aktuell markierte Zelle nicht leer ist, dann nach der Zelle filtern
If IsEmpty(ActiveCell) = False Then _
Range("A1:C" & Range("C65536").End(xlUp).Row).AutoFilter Field:=iFilterColumn, _
Criteria1:=Cells(iFilterRow, iFilterColumn)
End Sub
Sub Autofilter_zurück()
Dim iFilterColumnPrüf As Filter
'Bei Auftreten eines Fehlers, weil z.B. die Variable "iFilterColumn" den _
Wert 0 enthält, zur Sprungmarke "Errorhandler" springen
On Error GoTo Errorhandler
'Autofilter auf Einstellung "Alle" stellen
Range("A1:C" & Range("C65536").End(xlUp).Row).AutoFilter Field:=iFilterColumn
'Zelle, nach der gefiltert wurde, markieren, Zeile und Spalte kommen aus den _
beiden globalen Variablen "iFilterRow" und "iFilterColumn", die die _
Zeilennummer und die Spaltennummer enthalten, die beim Ausführen des Makros _
"Auofilter_aktive_Zelle" in diese Variablen geschrieben wurden
Cells(iFilterRow, iFilterColumn).Select
'Prozedur beenden
Exit Sub
'Sprungmarke "Errorhandler" definieren
Errorhandler:
'In Variable "iFilterColumn" den Wert 0 schreiben
iFilterColumn = 0
'Wenn Autofilter im aktuellen Tabellenblatt aktiviert wurde, dann...
If ActiveSheet.AutoFilterMode Then
'...For/Each-Schleife starten um die Spalte, nach der gefiltert wurde, zu ermitteln
For Each iFilterColumnPrüf In ActiveSheet.AutoFilter.Filters
'Variable "iFilterColumn" um den Wert 1 erhöhen
iFilterColumn = iFilterColumn + 1
'Wenn es sich bei der Spalte, die aktuell durch die For/Each-Schleife angesprochen _
wird, um die Spalte handelt, bei der die Eigenschaft auf "On" steht, da nach dieser _
Spalte gefiltert wurde, dann...
If iFilterColumnPrüf.On Then
'...den Filter in dieser Spalte wieder auf "Alle" stellen
Range("A1:C" & Range("C65536").End(xlUp).Row).AutoFilter Field:=iFilterColumn
'Abfrage Ende
End If
'Nächsten Schleifendurchlauf starten
Next
'Abfrage Ende
End If
End Sub
[/b]Die Makros sehen optisch sehr gewaltig aus. Das hängt damit zusammen, dass ich jede Zeile des Makros auskommentiert habe, damit Du sehen kannst, was in welcher Zeile erledigt wird.
Autofilter Ergebnis in neue Zelle
fedjo 04.01.2007 - 101 Hits - 2 Antworten
autofilter mit vba
SARP 12.08.2007 - 133 Hits - 2 Antworten
Autofilter auslesen und ausgeben
Tomschi 23.08.2007 - 127 Hits -
Ansicht Autofilter ändern
Clekie 27.09.2007 - 20 Hits -
excel vba filter reset
majoplinka 23.03.2008 - 141 Hits - 1 Antwort