Herbers Excel-Forum - das Archiv
Autofilter-Kriterium automatisch auslesen!
Betrifft: Autofilter-Kriterium automatisch auslesen!
von: Andre
Geschrieben am: 14.10.2003 14:54:02
Guten Tag,
habe folgenden Code bereits der Recherche entnommen, möchte aber diesen Code nicht immer manuell starten, sondern der Code soll ablaufen, sobald neu gefiltert wurde. Jetzt das Problem: Kein Schimmer wie!
Sub Filter()
z = [A1].CurrentRegion.Rows.Count
For i = 3 To z
If Rows(i).Hidden = False Then
Cells(1, 1) = Cells(i, 1)
Exit For
End If
Next i
End Sub
Wäre dankbar für eure Hilfe.
Gruß Andre
Betrifft: AW: Autofilter-Kriterium automatisch auslesen!
von: Ramses
Geschrieben am: 14.10.2003 15:47:30
Hallo
der Code wird nicht funktionieren, weil er die Schleife abbricht wenn er eine Zeile findet die ausgeblendet ist. Somit also nicht zwingend bis zum Ende des gefilterten Datenbereiches kommt.
Verwende alternativ die Formel
=TEILERGEBNIS(2;A2:A100)
in einer freien Zelle, wenn dein Datenbereich von A2:A100 geht um die Anzahl der gefilterten Datensätze zu zählen.
Gruss Rainer
Betrifft: AW: Autofilter-Kriterium automatisch auslesen!
von: Andre
Geschrieben am: 14.10.2003 15:57:44
Hi Rainer,
der Code macht eigentlich schon was ich möchte, nur muss ich ihn im Moment noch manuell ausführen.
Der Code gibt nur die erste Zelle wieder, die gerade unter dem Autofilter steht, d.h. ich habe somit mein Filterkriterium.
Oder ich merke nicht, daß mich der Code veralbert, aber das bezweifle ich.
Gruß Andre
Betrifft: AW: Autofilter-Kriterium automatisch auslesen!
von: Ramses
Geschrieben am: 14.10.2003 16:21:46
Hallo
Das kommt so aber nicht richtig rüber.
Setze deine Code in das Klassenmodul deiner Tabelle wo du filterst unter
Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
dann wird er jedesmal ausgeführt, wenn du in der Tabelle etwas änderst
Um das Kriterium richtig auszulesen ist das zwar machbar, aber eleganter wäre
'Autofilterkriterien in einer Zelle darstellen
'Aufruf über =Filterkriterien(Zelle in der Spalte) wo der Filter gesetzt wurde
Function FilterKriterien(rng As Range) As String
Dim Filter As String
Filter = ""
On Error GoTo Finish
With rng.Parent.AutoFilter
If Intersect(rng, .Range) Is Nothing Then GoTo Finish
With .Filters(rng.Column - .Range.Column + 1)
If Not .On Then GoTo Finish
Filter = .Criteria1
Select Case .Operator
Case xlAnd
Filter = Filter & " UND " & .Criteria2
Case xlOr
Filter = Filter & " ODER " & .Criteria2
End Select
End With
End With
Finish:
FilterKriterien = Filter
End Function
oder einfacher
Function AutoFilterKriterium(Spalte As Long) As String
'von JensF aus dem Spotlight-Forum
'Kriterium des Autofilter aus spalte x auslesen
Dim x As Long
Application.Volatile
If ActiveSheet.AutoFilter.Filters(Spalte).On Then
Kriterium = ActiveSheet.AutoFilter.Filters(Spalte).Criteria1
End If
On Error Resume Next
Kriterium = Kriterium & "; " & ActiveSheet.AutoFilter.Filters(Spalte).Criteria2
'Schreibe nun in eine Zelle
'=kriterium(1)
End Function
Gruss Rainer
Betrifft: AW: Autofilter-Kriterium automatisch auslesen!
von: Andre
Geschrieben am: 15.10.2003 08:44:54
Hi,
die Idee mit "Change" hatte ich auch schon, aber das Problem ist, beim Filtern ändert man die Tabelle ja nicht, sondern nur die Darstellungsweise. Also nutz mir Change nichts,
trotzdem danke.
Danke für deine elegante Lösung.
Gruß Andre