Avatar billede prhan Juniormester
17. januar 2014 - 12:06 Der er 3 kommentarer og
1 løsning

VBA - frvning af celler

Jeg har denne sub som tidligere har virket fint for mig:

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
                            'Hvis værdi i kolonnen til højre er >-0,2 og <0,2, så anvendes udfyldningsfarven i denne celle (altså kolonnen til højre)

Dim Row As Integer, Col As Integer

Const FirstRow = 10 'Svarende til række 10
Const LastRow = 737 'Sidste række
Const Rowstep = 1
Const FirstCol = 9 'Svarende til Kolonne I
Const LastCol = 162 'Svarende til Kolonne FF
Const ColStep = 3  'Svarende til farvelægning foretages på hver tredje kolonne

Sheets("Tildelt_tid").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 'Rød
        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 'Grøn
        Else
            Cells(Row, Col).Interior.Color = Cells(Row, Col + 1).Interior.Color 'Alle andre celler har rækkens standard udfyldningsfarve
        End If
       
    Next Row
Next Col
       
End Sub

Problemet er nu, at Cells(Row, Col).Value ikke kun er tal, men kan også være "". Resultatet er, at alle de celler der, gennem kæden, har værdien "" farves grønne, og de skulle have samme farve som cellen en gang til højre.

Subben debuger med fejlen "Type mismatch".

Værdierne i Cells(Row, Col).Value består af kæder til et andet ark og når der først er kommet tal ind, så fungere den fint. Der vil dog altid være nogle celler der refere til værdien "" gennem kæden.

Hvordan får jeg kommer jeg videre?
17. januar 2014 - 21:48 #1
Du kunne prøve med en ekstra IF sætning omkring din validering

    If IsNumeric(Cells(Row, Col).Value) Then
        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 'Rød
        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 'Grøn
        Else
            Cells(Row, Col).Interior.Color = Cells(Row, Col + 1).Interior.Color 'Alle andre celler har rækkens standard udfyldningsfarve
        End If
    Else
        Cells(Row, Col).Interior.Color = Cells(Row, Col + 1).Interior.Color
    End If
Avatar billede prhan Juniormester
20. januar 2014 - 07:33 #2
Super, smid endelig et svar.
Avatar billede prhan Juniormester
04. februar 2014 - 07:28 #3
#smartoffice_dk, vil du har pointene?
18. februar 2014 - 14:08 #4
:-)
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