Avatar billede mr.handstand Novice
05. januar 2007 - 12:38 Der er 4 kommentarer og
1 løsning

Betinget formattering skal ændres til interiorfarve af anden cell

Hejsa,
Jeg har lavet en række betingede formler, hvor jeg med farver ønsker at illustrere hvilke celler der skal udfyldes / hhv. ikke skal udfyldes.

Hvordan gør jeg denne "udfyld-ikke" farve til interiorfarver fra en bestemt celle ved hjælp af efterfølgende gennemløb?

Kan jeg fx med VBA løbe alle mine Betingede formateringer igennem og udskifte farven?

Forudsætning: Alle betingede formatteringer i regnearket indeholder lige nu samme opbygning: Hvis en bestemt celle i samme række har en given værdi, skal denne celle enten være farvet eller ikke-farvet.

Eksempel:
På arket "Register" i kolonnen "L" følgende bet.formattering i L10

=$C10=CurrentTypeIssue
Betinget formattering: Cell interior = (Farvevalg fra Excel farvepaletten)

Dette virker fint, og i ovenstående eksempel skifter J10 farve til "brun", hvis C10 = værdien i den navngivne celle CurrenttypeIssue

På enkelte celler er der flere betingelser, fx for cellen "J11":
Hvis B11 = "værdi1" --> interiorfarve = farve
Hvis B11 = "værdi2" --> interiorfarve = farve (samme farve)



Kan jeg på en elegang måde traversere alle conditional formattings igennem?

Når jeg aktiverer makro skriver den fx følgende kode ved oprettelse af en betinget formattering

    Range("H16").Select
    Selection.FormatConditions.Delete
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$F$16=""c"""
    Selection.FormatConditions(1).Interior.ColorIndex = 3
    Range("I28").Select

En meget tung workaround vil være at lave en makro der påny skriver samtlige betingede formatteringer ind, men da vi snakker 1000+ betingede formatteringer vil det være tungt at indskrive alle betingelserne påny samt tungt at trigge delete og opret hver gang én person ønsker at vise ikke-aktive felter med en anden farve, der modsvarer det øvrige farvevalg i løsningen.
Avatar billede gibber Nybegynder
05. januar 2007 - 14:41 #1
Du kan under betinget formatering for celle J11 f.eks. vælge:

Formel er: =HVIS($B$11=2;SAND; FALSK)

Vælg gul baggrund,

og

Formel er: =HVIS($B$11=3;SAND; FALSK)

Vælg grøn baggrund.

Nu vil J11's interiorfaver være gul hvis B11=2, grøn hvis B11=3 og ingen farve hvis B11 er alle andre værdier.
Avatar billede mr.handstand Novice
05. januar 2007 - 17:29 #2
Tak for kommentaren gibber - men det er ikke hvad jeg efterspørger.

Jeg skal dynamisk kunne tilpasse farven af de mange betingede formatteringer overalt i arket, ved at en bruger ændrer farven på én celle på et setup-ark.

Det er et stort ark, hvor man kan sprog- og farvestyre indholdet i alle overskrifter, indtastningsområder mv.

Farvestyringen er håndteret ved at brugeren pt. kan definere 4 forskellige farver: Overskrift-baggrundsfarve, Overskrift-tekstfarve, Indtastområde-baggrundsfarve, indtastområde-tekstfarve.

Dette er løst ved at navngive alle ranges der skal kunne skifte farve og skrive disse navne ind i et config ark, med angivelse af om det er en heading eller indtastningsrange.

i = 1

While Len(Range("HeadingConfigColorChanges").Offset(i, 0).Value) > 1
    Debug.Print Range("HeadingConfigColorChanges").Offset(i, 0).Value
    If Range("HeadingConfigColorChanges").Offset(i, 0).Value = "Heading" Then
        Range(Range("HeadingConfigColorChanges").Offset(i, 1).Value).Interior.ColorIndex = Range("ColorHeadingBackground").Interior.ColorIndex
        Range(Range("HeadingConfigColorChanges").Offset(i, 1).Value).Font.ColorIndex = Range("ColorHeadingFont").Interior.ColorIndex
    End If
   
    If Range("HeadingConfigColorChanges").Offset(i, 0).Value = "Cells" Then
        Range(Range("HeadingConfigColorChanges").Offset(i, 1).Value).Interior.ColorIndex = Range("ColorCellsBackground").Interior.ColorIndex
        Range(Range("HeadingConfigColorChanges").Offset(i, 1).Value).Font.ColorIndex = Range("ColorCellsFont").Interior.ColorIndex
    End If
   
   
    i = i + 1
Wend


Alle mine betingede formatteringer er celler i indtastningsområdet der er inaktive (ikke skal udfyldes) - dette skal gerne matche de øvrige farvevalg når jeg kører min makro, således at felter der ikke skal anvendes har forskellig farve, afhængigt af de farver man vælger i øvrigt. Optimalt set definerer jeg en celle med navn ColorInactiveCellsBackground, hvorved jeg med range("ColorInactiveCellsBackground").interior kan farve alle mine betingede formatteringer i en makro.

Jeg håber min forklaring nu giver mere mening.
Avatar billede gibber Nybegynder
05. januar 2007 - 20:36 #3
Prøv mednedenstående makro.

Den undersøger hver celle i et område for betingede formateringer.
Der bør angives begrænsede områder i ark (ubenytttede områder kan alternativt skjules) da makroen vil være meget langtid om at checke alle celler i arket.




Sub Opdaterbaggrundsfarve()

Dim rCells As Range

Sheets("ark1").Range("A1:L50").Select ' Definer område hvor markoen skal undersøge/ændre
For Each rCells In Selection
For a = 1 To 3 ' tester for op til 3 betingelser i formateringen
  If rCells.FormatConditions.Count = a Then
    rCells.FormatConditions(a).Interior.ColorIndex = Range("ColorInactiveCellsBackground").Interior.ColorIndex
  End If
Next a
Next rCells
End Sub
Avatar billede mr.handstand Novice
08. januar 2007 - 12:57 #4
Med udgangspunkt i din glimrende kode har jeg tilrettet en smule.

Du tester for antal betingede formatteringer men ændrer kun den øverste, jeg sætter blot lige endnu et inner loop op, så kører det hele - mange tak!

Smid et svar, gibber, så får du dine velfortjente point!


        If Range("HeadingConfigColorChanges").Offset(i, 0).Value = "Conditional Format" Then
            Debug.Print Range(Range("HeadingConfigColorChanges").Offset(i, 1).Value).Address
            For Each cell In Range(Range("HeadingConfigColorChanges").Offset(i, 1).Value)
                For a = 1 To 3 ' tester for op til 3 betingelser i formateringen
                    If cell.FormatConditions.Count = a Then
                        For y = 1 To a
                        cell.FormatConditions(y).Interior.ColorIndex = Range("ColorCellsFrameAndConditionalFormat").Interior.ColorIndex
                        Next y
                    End If
                Next a
            Next cell
        End If
Avatar billede gibber Nybegynder
08. januar 2007 - 14:19 #5
Det glæder mig, at det hjalp dig på vej. :)
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
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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