Avatar billede rodding Juniormester
07. november 2006 - 20:26 Der er 10 kommentarer og
1 løsning

Macro til auto farvelægning

Jeg har lavet en kalender, som jeg gerne nemt vil kunne skifte farve på.

Fra række 5 til 35 vil jeg gerne have kolonne b,c,d og e givet baggrundsfarve.
Hvis der i kolonne b står Lørdag skal kolonnne b-e have den baggrundsfarve der er valgt i felt AH5.
Hvis der i kolonne b står Søndag skal kolonne b-e have den
baggrundsfarve der er valgt i felt AH6.

er det muligt?
Avatar billede mrjh Novice
07. november 2006 - 20:34 #1
Prøv betinget formatering under formater. Her kan du vælge formlen er og i formelfeltet =AH5="Lørdag" f.eks.
Avatar billede mrjh Novice
07. november 2006 - 20:36 #2
Men hvis det skal være makro, så kan det også fikses :-)
Avatar billede rodding Juniormester
07. november 2006 - 21:41 #3
Sådan har jeg gjort det nu, men jeg vil gerne give det nye år en ny farve, så de adskiller klart fra hinanden. Og det er noget besværligt at ændre via betinget formatering.
Iøvrigt indeholder AH5 ingen data, men kun den ønskede baggrundsfarve.
Avatar billede mrjh Novice
07. november 2006 - 22:31 #4
Indsæt denne kode i et arkmodul


Sub worksheet_selectionchange(ByVal target As Range)

If Intersect(target, Range("B1")) Is Nothing Or _
Intersect(target, Range("AH5:AH6")) Is Nothing Then
   
    farve1 = Range("AH5").Interior.ColorIndex
    farve2 = Range("AH6").Interior.ColorIndex
   
    If Range("B1").Value = "Lørdag" Then
        Range("B5:E35").Interior.ColorIndex = farve1
    End If
   
    If Range("B1").Value = "Søndag" Then
        Range("B5:E25").Interior.ColorIndex = farve2
    End If
   
End If
End Sub
Avatar billede mrjh Novice
07. november 2006 - 22:34 #5
En lille rettelse



Sub worksheet_selectionchange(ByVal target As Range)

If Intersect(target, Range("B1")) Is Nothing Or _
Intersect(target, Range("AH5:AH6")) Is Nothing Then
   
    farve1 = Range("AH5").Interior.ColorIndex
    farve2 = Range("AH6").Interior.ColorIndex
   
    If Range("B1").Value = "Lørdag" Then
        Range("B5:E35").Interior.ColorIndex = farve1
    End If
   
    If Range("B1").Value = "Søndag" Then
        Range("B5:E35").Interior.ColorIndex = farve2
    End If
   
End If
End Sub
Avatar billede kabbak Professor
07. november 2006 - 22:49 #6
Som almindelig makro, med fjernelse af eksisterende farve

Public Sub SkiftFarve()
    Dim I As Integer, Farve1 As Integer, Farve2 As Integer
    Farve1 = Range("AH5").Interior.ColorIndex
    Farve2 = Range("AH6").Interior.ColorIndex
    For I = 5 To 35
        Select Case UCase(Cells(I, "B"))
        Case "LØRDAG"
            Range("B" & I & ":E" & I).Interior.ColorIndex = Farve1
        Case "SØNDAG"
            Range("B" & I & ":E" & I).Interior.ColorIndex = Farve2
        Case Else
            Range("B" & I & ":E" & I).Interior.ColorIndex = xlNone
        End Select
    Next
End Sub
Avatar billede rodding Juniormester
08. november 2006 - 09:27 #7
Tak, - jeg kigger på det i aften.
Avatar billede rodding Juniormester
09. november 2006 - 15:14 #8
kabbak - din løsning dækker præcis min kalender funktion.

Som du nok kan regne ud vil din programstump farvelægge januar. Jeg skal jo så gøre det samme for de resterende måneder. Er der en snildere måde, end at kopiere dit program 11 gange efter hinanden og så rette kolonne bogstaverne? Februar går fra G til J.

Læg et svar for point
Avatar billede kabbak Professor
09. november 2006 - 16:31 #9
Public Sub SkiftFarve()
    Dim I As Integer, Farve1 As Integer, Farve2 As Integer, C As Integer
    Farve1 = Range("AH5").Interior.ColorIndex
    Farve2 = Range("AH6").Interior.ColorIndex
    For C = 2 To 30 Step 5    ' går ud fra at der er 6 måneder, hvor hver måner er 2 celler med 1 tom imellem
        ' hvis du har 12 måneder ved siden af hinanden skal der stå 60 i stedet for 30
        For I = 5 To 35
            Select Case UCase(Cells(I, "B"))
            Case "LØRDAG"
                Range(Cells(I, C), Cells(I, C + 3)).Interior.ColorIndex = Farve1
            Case "SØNDAG"
                Range(Cells(I, C), Cells(I, C + 3)).Interior.ColorIndex = Farve2
            Case Else
                Range(Cells(I, C), Cells(I, C + 3)).Interior.ColorIndex = xlNone
            End Select
        Next I
    Next C
End Sub
Avatar billede kabbak Professor
09. november 2006 - 16:32 #10
For C = 2 To 30 Step 5    ' går ud fra at der er 6 måneder, hvor hver måner er 4 celler med 1 tom imellem
        ' hvis du har 12 måneder ved siden af hinanden skal der stå 60 i stedet for 30
        For I = 5 To 35
Avatar billede rodding Juniormester
10. november 2006 - 08:26 #11
Jeg har ikke lige nået at prøve det nye tiltag endnu, men det ser rigtigt ud.

Tak for hjælpen.
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