Supportnet / Forum / Tabellenkalkulation
Kontroll-Pfeil bei Filter
Frage
Hallo zusammen
Meine Frage ist foldende:
Wenn ich in einer Liste einen Filter erstelle, kann ich das Kontrollkästchen mit dem Pfeil ändern (Grösse und Farbe)?
Vielen Dank
Gruss Phonky
Antwort 1 von Beverly
Hi Phonky,
nein, dass geht nicht. Aber du könntest z.B. die Zelle oberhalb des Filters farbig markieren. Schreibe dazu in eine beliebige Zelle die Funktion =ZUFALLSZAHL() und in das Codefenster der betreffenden Tabelle folgenden Code
Die Zeile musst du evtl. anpassen. Im Beispiel ist Zeile 7 die Filterzeile und Zeile 6 wird formatiert und die Filterauswahl angezeigt.
Bis später,
Karin
nein, dass geht nicht. Aber du könntest z.B. die Zelle oberhalb des Filters farbig markieren. Schreibe dazu in eine beliebige Zelle die Funktion =ZUFALLSZAHL() und in das Codefenster der betreffenden Tabelle folgenden Code
Private Sub Worksheet_Calculate()
Dim wsTabelle As Worksheet
Dim inFilter As Integer
Dim arrFilter()
Dim strFilter As String
Set wsTabelle = Worksheets("Tabelle1")
Application.EnableEvents = False
With wsTabelle.AutoFilter
strFilter = .Range.Address
With .Filters
ReDim arrFilter(1 To .Count, 1 To 3)
For inFilter = 1 To .Count
With .Item(inFilter)
If .On Then
On Error Resume Next
arrFilter(inFilter, 1) = .Criteria1
If .Operator Then
arrFilter(inFilter, 2) = .Operator
arrFilter(inFilter, 3) = .Criteria2
End If
End If
End With
Next
End With
End With
With wsTabelle
For inFilter = LBound(arrFilter()) To UBound(arrFilter())
If IsNumeric(arrFilter(inFilter, 1)) Then
.Cells(6, inFilter) = arrFilter(inFilter, 1)
Else
.Cells(6, inFilter) = Mid(arrFilter(inFilter, 1), 2)
End If
If arrFilter(inFilter, 1) <> 0 Then
.Cells(6, inFilter).Interior.ColorIndex = 4
Else
.Cells(6, inFilter).Interior.ColorIndex = xlNone
End If
Next inFilter
End With
Application.EnableEvents = True
End Sub
Die Zeile musst du evtl. anpassen. Im Beispiel ist Zeile 7 die Filterzeile und Zeile 6 wird formatiert und die Filterauswahl angezeigt.
Bis später,
Karin
Antwort 2 von fedjo
Hallo Phonky ,
Code in das Codefenster der Tabelle einfügen, wo der Autofilter aktiv ist. In einer Zelle der Tabelle =HEUTE() schreiben.
Der Autofilter wird dann automatisch erkannt.
Gruß
fedjo
Private Sub Worksheet_Calculate()
Dim intIndex As Integer 'Autofilter Zelle wird grün
If Not ActiveSheet.AutoFilter Is Nothing Then
For intIndex = 1 To ActiveSheet.AutoFilter.Filters.Count
Range(Cells(ActiveSheet.AutoFilter.Range.Row, ActiveSheet.AutoFilter.Range.Column - 1 + intIndex), _
Cells(ActiveSheet.AutoFilter.Range.Row, ActiveSheet.AutoFilter.Range.Column - 1 + intIndex)).Interior.ColorIndex = _
IIf(ActiveSheet.AutoFilter.Filters(intIndex).On, 4, 2)
Next
End If
End Sub
Code in das Codefenster der Tabelle einfügen, wo der Autofilter aktiv ist. In einer Zelle der Tabelle =HEUTE() schreiben.
Der Autofilter wird dann automatisch erkannt.
Gruß
fedjo
Private Sub Worksheet_Calculate()
Dim intIndex As Integer 'Autofilter Zelle wird grün
If Not ActiveSheet.AutoFilter Is Nothing Then
For intIndex = 1 To ActiveSheet.AutoFilter.Filters.Count
Range(Cells(ActiveSheet.AutoFilter.Range.Row, ActiveSheet.AutoFilter.Range.Column - 1 + intIndex), _
Cells(ActiveSheet.AutoFilter.Range.Row, ActiveSheet.AutoFilter.Range.Column - 1 + intIndex)).Interior.ColorIndex = _
IIf(ActiveSheet.AutoFilter.Filters(intIndex).On, 4, 2)
Next
End If
End Sub
Antwort 3 von Phonky
Vielen Dank Beverly und Fedjo.
Sobald ich Zeit habe....wird morgen sein, werde ich euch bescheid geben.
Danke nochmals
Bye Phonky
Sobald ich Zeit habe....wird morgen sein, werde ich euch bescheid geben.
Danke nochmals
Bye Phonky
Antwort 4 von Phonky
Guten Tag...
Habe da mal ausprobiert, aber ich muss sagen keine Ahnung.Ich weiss nicht einmal wass ich fragen soll.
Ich habe beides gemacht, aber es geschieht nichts.
Zu dem... Schreibe dazu in eine beliebige Zelle die Funktion =ZUFALLSZAHL()
Ich überlege mir nochmals was ich genau machen will, und gib dann bescheid.
Vielen dank nochmal
Bye Phonky
Habe da mal ausprobiert, aber ich muss sagen keine Ahnung.Ich weiss nicht einmal wass ich fragen soll.
Ich habe beides gemacht, aber es geschieht nichts.
Zu dem... Schreibe dazu in eine beliebige Zelle die Funktion =ZUFALLSZAHL()
Ich überlege mir nochmals was ich genau machen will, und gib dann bescheid.
Vielen dank nochmal
Bye Phonky
Antwort 5 von Beverly
Hi Phonky,
beim Autofilter wird kein Ereignis ausgelöst, welches man abfragen kann. Deshalb muss man sich anders behelfen. Jede Veränderung in der Tabelle bewirkt eine Neuberechnung der Funktion ZUFALLSZAHL() (oder HEUTE()), sodass damit sozusagen indirekt die Veränderung durch den Autofilter festgestellt wird. Und diese Veränderung kann man mit dem Worksheet_Calculate Ereignis auswerten. Ohne eine der beiden Funktionen geht es also nicht.
Bis später,
Karin
beim Autofilter wird kein Ereignis ausgelöst, welches man abfragen kann. Deshalb muss man sich anders behelfen. Jede Veränderung in der Tabelle bewirkt eine Neuberechnung der Funktion ZUFALLSZAHL() (oder HEUTE()), sodass damit sozusagen indirekt die Veränderung durch den Autofilter festgestellt wird. Und diese Veränderung kann man mit dem Worksheet_Calculate Ereignis auswerten. Ohne eine der beiden Funktionen geht es also nicht.
Bis später,
Karin

