Avatar billede Sigma Pi Juniormester
30. januar 2017 - 12:41 Der er 7 kommentarer og
1 løsning

VBA: Farve en celle, hvori der et aktivt autofilter

Hej alle,

Jeg har et datasæt med overskrifter. Og hver enkelt af dem har filter på (autofilter).
Der er omkring 40 kolonner, så for ikke at misse, at der er filtreret på én af kolonnerne, så kunne jeg godt tænke mig, at cellen hvori man valgte selve filteret blev farvet, når der var slået et filter til.

Jeg har ikke rigtig kunne finde nogle gode svar nogle steder på nettet ellers, så jeg håber I kan hjælpe herinde.

Jeg synes tidligere at have set noget med .AutoFilter.On, men jeg kan ikke rigtig finde noget på det, og den bliver ved med at sige .On ikke kan anvendes til det givne objekt.

Min kode ser således ud indtil videre:

Sub ColorWhenAutoFilterIsOn()

Dim rngIndividualHeadline As Range
Dim rngEntireHeadline As Range

Set rngEntireHeadline = Range("A9:O9")

For Each rngIndividualHeadline In rngEntireHeadline
    If rngIndividualHeadline.AutoFilter.On Then
        rngIndividualHeadline.Interior.Color = rgbBlue
        rngIndividualHeadline.Font.Color = rgbWhite
    Else
        rngIndividualHeadline.Interior.Color = rgbAliceBlue
        rngIndividualHeadline.Font.Color = rgbBlack
    End If
Next rngIndividualHeadline

End Sub

Og den giver som sagt fejl?! Hvad gør jeg galt?
Avatar billede Jan Hansen Ekspert
30. januar 2017 - 15:17 #1
Avatar billede store-morten Ekspert
30. januar 2017 - 18:42 #2
Prøv denne i et Modul:
Function Er_AutoFilter_Aktiv(Header As Range) As String
Dim Filter_Brugt As String

    Application.Volatile

    With Header.Parent.AutoFilter
        With .Filters(Header.Column - .Range.Column + 1)
            If Not .On Then Exit Function
                Filter_Brugt = "Ja"
            End With
    End With

    Er_AutoFilter_Aktiv = Filter_Brugt

End Function

I "Betinget formatering" -->
Brug en formel til at bestemme, hvilke celler der skal formateres -->

Formatér værdier, hvor denne celle er sand:
=Er_AutoFilter_Aktiv(A9) ="Ja"

Gælder for:
=$A$9:$O$9

Husk at vælge farve i: "Formater"
Avatar billede store-morten Ekspert
30. januar 2017 - 19:02 #3
Evt. denne formel i A8:
=HVIS(Er_AutoFilter_Aktiv(A9)="JA";"Filtreret";"")    --> fyld ud til O8.
Vælg rød og fed tekst farve.
Avatar billede Sigma Pi Juniormester
31. januar 2017 - 08:56 #4
@Jan
Har prøvet at læse artiklen igen (tror jeg var faldet over den tidligere).
Den virker ikke, som jeg ønsker - men muligt det er min problemstilling der driller (eller evnen til at gennemskue).

@store-morten
Jeg prøver lige dit forslag af. Så vender jeg tilbage.
Avatar billede Sigma Pi Juniormester
02. februar 2017 - 10:49 #5
Vil bare lige sige, at I ikke er glemt. Er bare lige lidt ophængt. Skal nok vende tilbage og give points for løsning, når jeg lige har afprøvet det.
Avatar billede Sigma Pi Juniormester
02. februar 2017 - 13:03 #6
Det virker lige som det skal Store-Morten.
Så svaret er dit!

Så må jeg prøve at se om jeg kan rode med, hvordan jeg decifrerer dit svar til at være noget jeg kan køre inde i et loop i VBA ;)

Det ville jeg SÅ gerne, for at kunne føle, at jeg rent faktisk forstår, hvad der sker i koden :)
Avatar billede Sigma Pi Juniormester
02. februar 2017 - 13:04 #7
P.S. (store-morten)
Hvordan fik du din kode til at være inde i den grå kasse, i dit opslag?
Avatar billede store-morten Ekspert
02. februar 2017 - 20:49 #8
Jeg ved ikke om man kan lave en 'Function' om til Sub/Loop.

Grå kasse:
[div) Tekst. (/div]
Skift de to inderste paranteser ud med kantede klammer.
Gøres med Alt gr + (
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester