Avatar billede jath08ac Forsker
06. august 2016 - 20:32 Der er 1 kommentar

Hjælp til VBA Kode - baggrundfarve udfra kriterie

Hej,

Jeg har brug for lidt hjælp til følgende kode

Sub Kontrol()
Application.ScreenUpdating = False
Range("D7:W1000").Interior.ColorIndex = xlNone
For rk = 7 To 1000
For kol = 3 To 23
If Cells(rk, kol) <> Cells(rk, "C") And Cells(rk, kol) <> 0 Then
Cells(rk, kol).Interior.ColorIndex = 22
End If
Next
Next
Range("D7:D5000").Interior.ColorIndex = xlNone
t = 7 'Første udfyldte række i kolonne c. Du kan ændre til eget tal.
Do Until ThisWorkbook.Sheets("Kontrol").Cells(t, 3) = "" 'Indtil kolonne W er tom.
    For col = 3 To 23 'Fra kolonne c til w
        If ThisWorkbook.Sheets("Kontrol").Cells(t, col).Interior.ColorIndex <> "-4142" Then '"-4142" er værdien, hvis baggrundsfarve ikke er sat
            ThisWorkbook.Sheets("Kontrol").Cells(t, 3).Interior.ColorIndex = 27 'Nr. 6 er gul. Du kan vælge mellem 1-56. Alternativt kan du 'Interior.ColorIndex' til 'Interior.Color', for flere valgmuligheder.
        End If
    Next
    t = t + 1
Loop
Application.ScreenUpdating = True
End Sub

Sp 1:
Jeg kunne godt tænke mig, at rk og kol er dynamisk, således at koden kan tilpasse sig, indtil at der ikke er flere rækker eller kolonner der er udfyldt. rk og kol vil altid starte i række 7 og kolonne 3.

Range("D7:D5000") må også meget gerne være dynamisk, således koden stopper med at køre, indtil kolonne D er tom. Der er ingen formler i kolonne D, men alene talværdier.?

Sp2.
Jeg kunne god tænke mig, at ref. til arknavnet i koden kan være dynamisk, således at man kan ændre navnet, uden at skulle ind og ændre i koden?

På forhånd tak
Avatar billede excelent Ekspert
07. august 2016 - 10:29 #1
Prøv :

Sub xKontrol()
Set sh = Sheets("Ark2") ' Ret Ark2 til aktuel arknavn

Application.ScreenUpdating = False

sh.Range("D7:W" & sh.Cells(Rows.Count, "C").End(xlUp).Row).Interior.ColorIndex = xlNone

For rk = 7 To sh.Cells(Rows.Count, "C").End(xlUp).Row
  For kol = 3 To 23
    If kol = 4 Then farve = 27 Else farve = 22
    If sh.Cells(rk, kol) <> sh.Cells(rk, "C") And sh.Cells(rk, kol) <> 0 Then
    sh.Cells(rk, kol).Interior.ColorIndex = farve
    End If
  Next
Next

Application.ScreenUpdating = True

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

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