04. december 2007 - 12:22Der er
14 kommentarer og 1 løsning
Ændre farve alt efter hvad der står i feltet med en macro
Jeg har nogle data som ser ud som følgende:
a b c 1 Lasse 34 85 2 Børge 75 45 3 Kurt 85 2000 4 Claus 75 62 5 Henrik 74 32 6 Karl 72 25
Så vel jeg gerne have en macro der farver rækken (ved Lasse Farves: A1,B1 og C1), hvert navn har en farve. Når feltet er farvet og macroen køres igen skal den ikke farves på ny da listen kan blive meget lang. Dvs. at det er kun de rækker der ikke er farvet der skal have en farve.
Hvert navn skal have en bestemt farve, og den samme heletiden. Nej jeg kan ikke bruge betinget formatering da der kun er 3 betingelser. Hvis der står Lasse skal rækken altid være gul osv..
For Each r In Range(Kolonne & StartRække & ":" & Kolonne & SlutRække) If r.Interior.ColorIndex = xlNone Then Select Case r.Value Case "Lasse" r.Interior.ColorIndex = 3 r.Interior.Pattern = xlSolid Case "Kurt" r.Interior.ColorIndex = 4 r.Interior.Pattern = xlSolid End Select End If Next r
Denne kode, sætten farven efter hvilke farve navnet havde forrige gang
Private Sub CommandButton1_Click()
Const Kolonne As String = "A" Const StartRække As Integer = 1 Const Regneark As String = "Sheet1" Const farve As Integer = 1 Const navn As Integer = 0 Dim SlutRække As Integer Dim tabel(1000, 2) As Variant
SlutRække = Range(Kolonne & StartRække).CurrentRegion.Rows.Count + StartRække - 1 navnnr = 0 For Each r In Range(Kolonne & StartRække & ":" & Kolonne & SlutRække) If r.Interior.ColorIndex <> xlNone Then tabel(navnnr, farve) = r.Interior.ColorIndex tabel(navnnr, navn) = r navnnr = navnnr + 1 End If Next r
For Each r In Range(Kolonne & StartRække & ":" & Kolonne & SlutRække) If r.Interior.ColorIndex = xlNone Then For i = 0 To navnnr If UCase(r.Value) = UCase(tabel(i, navn)) Then For t = 0 To 2 r.Offset(0, t).Interior.Pattern = xlSolid r.Offset(0, t).Interior.ColorIndex = tabel(i, farve) Next t End If Next i End If Next r End Sub
Jooo, det kan man godt. Jeg kúnne bare ikke lige få det til at virke igår, så det sprang jeg over.
Prøv om dette er hurtigere
Private Sub CommandButton1_Click()
Const Kolonne As String = "A" Const KolonneSlut As String = "K" Const StartRække As Integer = 1 Const Regneark As String = "Sheet1" Const farve As Integer = 1 Const navn As Integer = 0 Dim SlutRække As Integer Dim tabel(1000, 2) As Variant
Application.ScreenUpdating = False navnnr = 0 For Each r In omrade If r.Interior.ColorIndex <> xlNone Then tabel(navnnr, farve) = r.Interior.ColorIndex tabel(navnnr, navn) = r navnnr = navnnr + 1 End If Next r
For Each r In omrade If r.Interior.ColorIndex = xlNone Then For i = 0 To navnnr If UCase(r.Value) = UCase(tabel(i, navn)) Then Range(Kolonne & r.Row & ":" & KolonneSlut & r.Row).Interior.ColorIndex = tabel(i, farve) End If Next i End If Next r Application.ScreenUpdating = True
Denne kode farver også dem der har en farve i 1.kolonne.
Private Sub CommandButton1_Click()
Const Kolonne As String = "A" Const KolonneSlut As String = "K" Const StartRække As Integer = 1 Const Regneark As String = "Sheet1" Const farve As Integer = 1 Const navn As Integer = 0 Dim SlutRække As Integer Dim tabel(1000, 2) As Variant
Application.ScreenUpdating = False navnnr = 0 For Each r In omrade If r.Interior.ColorIndex <> xlNone Then tabel(navnnr, farve) = r.Interior.ColorIndex tabel(navnnr, navn) = r navnnr = navnnr + 1 End If Next r
For Each r In omrade For i = 0 To navnnr If UCase(r.Value) = UCase(tabel(i, navn)) Then Range(Kolonne & r.Row & ":" & KolonneSlut & r.Row).Interior.ColorIndex = tabel(i, farve) End If Next i
Const Kolonne As String = "A" Const KolonneSlut As String = "K" Const StartRække As Integer = 1 Const Regneark As String = "Sheet1" Const farve As Integer = 1 Const navn As Integer = 0 Dim SlutRække As Integer Dim tabel(1000, 2) As Variant
Application.ScreenUpdating = False navnnr = 0 For Each r In omrade If r.Interior.ColorIndex <> xlNone Then tabel(navnnr, farve) = r.Interior.ColorIndex tabel(navnnr, navn) = r navnnr = navnnr + 1 End If Next r
For Each r In omrade For i = navnnr To 0 Step -1 If UCase(r.Value) = UCase(tabel(i, navn)) Then Range(Kolonne & r.Row & ":" & KolonneSlut & r.Row).Interior.ColorIndex = tabel(i, farve) End If Next i Next r Application.ScreenUpdating = True
Undskyld jeg har været bortrejst i et stykke tid...
Synes godt om
Ny brugerNybegynder
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.