Avatar billede prhan Juniormester
10. januar 2013 - 18:45 Der er 1 kommentar og
1 løsning

VBA farvning af celler

Jeg har et regneark med bl.a. følgende kolonner:
Tildelt tid    Forbrugt tid    Diff.
10:00                7:24    -97%
10:00                4:06    -94%
10:00              10:41    -98%

Jeg ønsker at få farvet forbrugt tid grøn eller rød ud fra 3 regler. Her for celle J10:
-Stop hvis celleværdien er mellem 0 og 1 (under 24 timer)
-Hvis f.eks. K10<-0,2 så farves skriften rød
-Hvis f.eks. K10>0,2 så farves skriften grøn

Jeg har lavet følgende VBA. Den fungere sådan set fint, men kan nok gøres smartere:
Sub Farvning_af_celler() 'Farver alle celler i forbrugt tid efter følgende regler
                            'Stop hvis celleværdien er mellem 0 og 1 (under 24 timer)
                            'Hvis f.eks. K10<-0,2 så farves skriften rød
                            'Hvis f.eks. K10>0,2 så farves skriften grøn

Range("J10").Activate

Do Until IsEmpty(ActiveCell.Value) = True
    If ActiveCell.Value > 1 And ActiveCell.Offset(0, 1) < -0.2 Then 'Cellens værdi er større end 24 timer og en kolonne hen er mindre end -20%
        ActiveCell.Interior.Color = 255
  ' Else
  '    ActiveCell.Interior.Color = xlNone 'Alle andre celler har ingen udfyldningsfarve
    End If
    If ActiveCell.Value > 1 And ActiveCell.Offset(0, 1) > 0.2 Then 'Cellens værdi er større end 24 timer og en kolonne hen er større end 20%
        ActiveCell.Interior.Color = 5287936
    'Else
    '    ActiveCell.Interior.Color = xlNone 'Alle andre celler har ingen udfyldningsfarve
    End If
       
    ActiveCell.Offset(1, 0).Activate '21 rækker op i samme kolonne
Loop

End Sub

Jeg ønsker nu at foretage den samme farvning af cellerne i en række andre kolonner, svarende til hver tredje kolonne frem og indtil kolonne FD.

Det kan sikkert gøres ret nemt, men er der nogen som kan hjælpe mig til at komme videre?
Avatar billede majbom Novice
11. januar 2013 - 12:38 #1
kun du ikke køre et while-loop der kører indtil kolonne-navnet er FD, og have en tæller du laver modulus 2 på, for at vide om kolonnen skal farves eller ej?

Eller har jeg misforstået dit ønske?
Avatar billede prhan Juniormester
11. januar 2013 - 15:15 #2
Jeg har selv fundet en løsning som jeg selvfølgelig gerne vil dele. Jeg ved ikke om jeg fik fik formuleret mit problem lidt uklart.

Sub Farvning_af_celler() 'Farver alle celler i forbrugt tid efter følgende regler
                            'Stop hvis celleværdien er mellem 0 og 1 (under 24 timer)
                            'Hvis værdi i kolonnen til højre <-0,2 så farves skriften rød
                            'Hvis værdi i kolonnen til højre >0,2 så farves skriften grøn

Dim Row As Integer, Col As Integer

Const FirstRow = 10
Const LastRow = 607
Const Rowstep = 1
Const FirstCol = 10
Const LastCol = 160
Const ColStep = 3

Sheets("Tildelt tid på opgaver").Select

For Col = FirstCol To LastCol Step ColStep

    For Row = FirstRow To LastRow Step Rowstep

        If Cells(Row, Col).Value > 1 And Cells(Row, Col + 1).Value < -0.2 Then
            'Cellens værdi er større end 24 timer og en kolonne hen er mindre end -20%
            Cells(Row, Col).Interior.Color = 255
        ElseIf Cells(Row, Col).Value > 1 And Cells(Row, Col + 1).Value > 0.2 Then
            'Cellens værdi er større end 24 timer og en kolonne hen er større end 20%
            Cells(Row, Col).Interior.Color = 5287936
        Else
            ActiveCell.Interior.Color = xlNone 'Alle andre celler har ingen udfyldningsfarve
        End If
       
    Next Row
Next Col
       
End Sub
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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