15. oktober 2006 - 22:49Der er
23 kommentarer og 1 løsning
Hvilken funktion skal man bruge
Jeg står overfor at skulle lave en formel som skal skifte baggrundsfarve på en celle afhængig af, hvad man indtaster i cellen. Jeg kan ikke bruge betinget formatering, da man kun kan lave 3 udvælgelse. Jeg skal bruge op til 7 skifte. Jeg håber at en eller anden kan hjælpe mig med problemet.
Tryk Alt+F11, dobb. klik på ark1(ark1), og sæt denne tekst ind:
Private Sub Worksheet_Change(ByVal Target As Range) Vaerdi = Target.Value With Selection.Interior Select Case Vaerdi Case "1" .ColorIndex = 46 Case "2" .ColorIndex = 3 Case "ja" .ColorIndex = 2 Case Else End Select .Pattern = xlSolid End With End Sub
Private Sub worksheet_change(ByVal target As Range) If Not Intersect(Range("A1:C100"), target) Is Nothing Then With target Select Case target.Value Case "A" .Interior.ColorIndex = 4 Case "B" .Interior.ColorIndex = 5 Case Else .Interior.ColorIndex = xlNone End Select End With End If End Sub
Du skal ændre "A", "B" o.s.v. til din egen tekst lige efter Case i koden. Altså
Private Sub worksheet_change(ByVal target As Range) If Not Intersect(Range("A1:C100"), target) Is Nothing Then With target Select Case target.Value Case "DIN TEKST" .Interior.ColorIndex = 4 Case "DIN TEKST" .Interior.ColorIndex = 5 ' O.s.v.
Case Else .Interior.ColorIndex = xlNone End Select End With End If End Sub
Hej Jeg er meget interesseret i ovennævnte med farvekoderne. Jeg er ikke ekspert i VBA, men har dog indspillet en del makroer.
Når jeg i editoren indspiller ovennævnte kode for senere at redigere den, bliver den ikke gemt. Dvs. når jeg går tilbage til mit xls. ark er der ingen makro. Hvad gør jeg galt - virker jo som makroen ikke bliver gemt?
Skal programmet returnere en farvekode med værdien indeholdt i cellen, kan man skrive dette program. Det er relativt hurtigt at koipere og editiere, hvis det er et stort program. Jeg erfarede af VBA kun kunne have ca. 600 linier ad gangen, så jeg måtte lave mange moduler.
Indtast nedenstående i VBA: (Celler og farvekoder er tilfældige) sub Farve() If Range("c8") = 0 Then Range("c8").Interior.ColorIndex = 2 If Range("c8") = 1 Then Range("c8").Interior.ColorIndex = 15 If Range("c8") = 2 Then Range("c8").Interior.ColorIndex = 3 If Range("c8") = 3 Then Range("c8").Interior.ColorIndex = 20 If Range("c8") = 4 Then Range("c8").Interior.ColorIndex = 27 If Range("c8") = 5 Then Range("c8").Interior.ColorIndex = 4 If Range("d8") = 0 Then Range("d8").Interior.ColorIndex = 2 If Range("d8") = 1 Then Range("d8").Interior.ColorIndex = 15 If Range("d8") = 2 Then Range("d8").Interior.ColorIndex = 3 If Range("d8") = 3 Then Range("d8").Interior.ColorIndex = 20 If Range("d8") = 4 Then Range("d8").Interior.ColorIndex = 27 If Range("d8") = 5 Then Range("d8").Interior.ColorIndex = 4 If Range("e8") = 0 Then Range("e8").Interior.ColorIndex = 2 If Range("e8") = 1 Then Range("e8").Interior.ColorIndex = 15 If Range("e8") = 2 Then Range("e8").Interior.ColorIndex = 3 If Range("e8") = 3 Then Range("e8").Interior.ColorIndex = 20 If Range("e8") = 4 Then Range("e8").Interior.ColorIndex = 27 If Range("e8") = 5 Then Range("e8").Interior.ColorIndex = 4 If Range("c9") = 0 Then Range("c9").Interior.ColorIndex = 2 If Range("c9") = 1 Then Range("c9").Interior.ColorIndex = 15 If Range("c9") = 2 Then Range("c9").Interior.ColorIndex = 3 If Range("c9") = 3 Then Range("c9").Interior.ColorIndex = 20 If Range("c9") = 4 Then Range("c9").Interior.ColorIndex = 27 If Range("c9") = 5 Then Range("c9").Interior.ColorIndex = 4 If Range("d9") = 0 Then Range("d9").Interior.ColorIndex = 2 If Range("d9") = 1 Then Range("d9").Interior.ColorIndex = 15 If Range("d9") = 2 Then Range("d9").Interior.ColorIndex = 3 If Range("d9") = 3 Then Range("d9").Interior.ColorIndex = 20 If Range("d9") = 4 Then Range("d9").Interior.ColorIndex = 27 If Range("d9") = 5 Then Range("d9").Interior.ColorIndex = 4 If Range("e9") = 0 Then Range("e9").Interior.ColorIndex = 2 If Range("e9") = 1 Then Range("e9").Interior.ColorIndex = 15 If Range("e9") = 2 Then Range("e9").Interior.ColorIndex = 3 If Range("e9") = 3 Then Range("e9").Interior.ColorIndex = 20 If Range("e9") = 4 Then Range("e9").Interior.ColorIndex = 27 If Range("e9") = 5 Then Range("e9").Interior.ColorIndex = 4
Er det store områder er det bedre med noget lignende:
Sub FarvFelter() Dim X As Range Dim Y As Range Set Y = Range("C8:E8") For Each X In Y If X = "0" Then X.Interior.ColorIndex = 2 Else X.Interior.ColorIndex = 0 End If Next End Sub
Nu ike fordi jeg har lavet så meget arbejde, som min kopiering antyder. Editoren har lavet det meste. Men den lettere udgave har også specielt det gode, at man ikke behøver samle kommandoerne i flere moduler. Tilsyneladende kan den enkelte makro kun konsumere ca. 600 linier.
Hilsen Mogens
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.