Supportnet Computer
Planet of Tech

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

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

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

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

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

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: