23. maj 2011 - 09:55Der er
14 kommentarer og 1 løsning
Hent cellefarve fra en celle og anvend denne i en anden (på baggrund af betingelser)
Hej
Jeg sidder med et ark hvor jeg gerne vil kunne "overstrege" linjer (rækker), der indeholder en bestemt værdi/grupperingstekst.
Beskrivelse af ark:
I området H1:H5 er indsat "grupperingstekst" Aa, Bb, Cc, Dd og Ee. Hver af de fem celler er farvet med en individuel farve (baggrundsfarve).
Fra række 10 og ned er der indsat en mængde date, som jeg ønsker at gruppere. Til brug for grupperingen har jeg indsat enten Aa, Bb, Cc, Dd elle Ee i kolonne H.
Funktionen skal:
Skal knytte farven i celle H1, H2, H3, H4 og H5 til "grupperingsteksten" Aa, Bb, Cc, Dd og Ee.
Når jeg i kolonne H (område H10:H1000) skriver Aa, Bb, Cc, Dd eller Ee, skal funktionen finde den tilhørende farve og farve den pågældende række i den farve som hører til grupperingsværdien. Hvis grupperingsværdien slettes skal farven i rækken fjernes og kolonne H i rækken skal farves lysgul (Color = 10092543).
Håber der er en der kan hjælpe med denne lille farvelade ;-)
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
MsgBox "Værdien i cellen er ikke korrekt", vbInformation
Target.Interior.Color = RGB(255, 255, 255)
End Select
End If
End Sub
----------
OBS: Koden virker i hele kolonne H fra og med H10 Koden farver/fjerner cellens border ... men det ta´r vi lige i anden omgang, når du har set om det virker.
Udfordringen er dog ligeledes at grupperingsværdierne i celle H1 til H5 (kan også tænkes at gå til H15) ikke er faste, da jeg skal bruge denne til mere sigende tekster end Aa, Bb, Cc, Dd, Ee - kunne også være Lone, Hans, Peter, Else m.v. Dette afhænger af de data jeg skal gruppere. Kan din løsning til passes så den sammenholder værdien i cellerne H1:H15 (eller blot H5 så tilpasser jeg selv) med værdien i den aktuelle celle i kolonne H, tager farven fra cellen i området H1:H15 og farver hele rækken?
Nulstillingfunktionen (tilbage til lysgul) kan den sættes til kun at gælde H og ikke hele rækken?
Jeg har rettet den lidt til så den nu kan det meste af ovenstående, men kan man få den til at opdatere alle rækker hvis en farve ønskes udskiftet i H1:H15 (i nedenstående kun til H5)?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As String Dim r As String Dim v As String
'aktuel kolonne nummer c = Target.Column
'aktuel række nummer r = Target.Row
'Aktuel celle værdi v = Target.Cells.Value
'Hvis kolonne H er den aktuelle kolonne 'og hvis det aktuelle rækkenummer er 10 eller større If c = 8 And r >= 10 Then
'Vælg aktuel celle værdi Select Case v
'Celle værdi "Aa" Case Range("H1").Value
'Tildel hele den aktuelle række med fraven fra celle H1 Target.Rows.EntireRow.Interior.Color = Range("H1").Interior.Color
'Celle værdi "Bb" Case Range("H2").Value
'Tildel hele den aktuelle række med farven fra celle H2 Target.Rows.EntireRow.Interior.Color = Range("H2").Interior.Color
'Celle værdi "Cc" Case Range("H3").Value
'Tildel hele den aktuelle række med farven fra celle H3 Target.Rows.EntireRow.Interior.Color = Range("H3").Interior.Color
'Celle værdi "Dd" Case Range("H4").Value
'Tildel hele den aktuelle række med farven fra celle H4 Target.Rows.EntireRow.Interior.Color = Range("H4").Interior.Color
'Celle værdi "Ee" Case Range("H5").Value
'Tildel hele den aktuelle række med farven fra celle H5 Target.Rows.EntireRow.Interior.Color = Range("H5").Interior.Color
'Celle værdien er tom Case ""
'Tildel hele den aktuelle række med farven lysegul Target.Cells.Interior.Color = 10092543
'Celle værdien er alt andet Case Else
'meddelelse ? MsgBox "Værdien i cellen er ikke korrekt", vbInformation
'farv celle hvid Target.Interior.Color = RGB(255, 255, 255)
Mangler kun at farverne kan opdateres uden at skulle ind i hver celle og trykke F2. En opdateringsfunktion så de farvede rækker følger en evt. ændring af farve i H1:H15.
Jeg kan ikke selv se hvordan man undgår at lave 15 linjer med:
Case Range("H1").Value Target.Rows.EntireRow.Interior.Color = Range("H1").Interior.Color
så det bliver ved denne løsning ;-)
Hvis du har en ide til opdateringen hører jeg meget gerne denne.
Hej tvcs Hvis du kan bruge en knap på det pågældende worksheet til at skifte baggrundsfarve med ?? Så vil jeg mene, at jeg har koden til dig ??
Jeg har forsøgt mig med den enkelte celles change hændelse samt selection_chance hændelse uden held ... Har dog ikke givet op ;0) ... Indtil det lykkes kan du evt. bruge knappen.
Jeg har rodet lidt med diverse celle hændelser, men jeg kan ikke finde en som trigges/kaldes ved blot at skifte baggrundsfarven ??
Derfor må du foreløbig klare dig med en knap :o)
Jeg har oprettet en knap (cmdFarveskift) på mit ark ved siden af Kolonne H. Bag knappen har jeg følgende kode, som ved et klik, skifter baggrundsfarve ned gennem rækkerne, hvor celle H har samme værdi som den valgte/udskiftede farve i cellerne H1-H5.
------------
Private Sub cmdFarveskift_Click() Dim c As String Dim r As String Dim v As String Dim f As Integer Dim a As String Dim bc As String Dim t As Integer
'Vælg den aktuelle celle ActiveCell.Select
'Aktuel kolonne nummer c = ActiveCell.Column
'Aktuel række nummer r = ActiveCell.Row
'Aktuel celle værdi v = ActiveCell.Cells.Value
'Aktuel celle adresse a = ActiveCell.Address
'Aktuel celle baggrundsfarve bc = ActiveCell.Interior.Color
'Tildel variablen t, rækkenummeret på sidste række i kolonne H, indeholdende data t = ActiveSheet.Range("H65536").End(xlUp).Row
'Hvis kolonne H er den aktuelle kolonne 'og hvis det aktuelle rækkenummer er 5 eller mindre If c = 8 And r <= 5 Then
'Løb ned gennem rækkerne og find identistiske værdier med celle værdien af den aktuelle celle For f = 10 To t
'Start i 10. række i kolonne H ActiveSheet.Range("H" & f).Select
'Hvis den nye aktive celles værdi er = med den aktuelle celle værdi If ActiveCell.Value = v Then
'Tildel hele den pågældende række med baggrundsfarven fra den aktuelle celle ActiveCell.EntireRow.Interior.Color = bc
End If
Next f
End If
'Vend tilbage til den aktuelle celle Range(a).Select
Jeg lægger fortsættelsen in under dette spørgsmål, hvis jeg finder på noget vedrørende den automatiske opdatering af baggrundsfarverne ved farveskift.
Måske blot ved at indsætte en lille kode, der holder øje med om target er <>"" og om target er mellem H2 og H19. Hvis betingelserne er opfyldt kan der komme MSGbox med spørgsmålet "Vil du opdatere farver for datalinjer?".
Det bliver ikke lige med det samme jeg ser på dette, da det p.t. virker. Det bliver et hyggeprojekt senere.
Selv tak .. det er være spændende. Glæder mig til at følge med i "jagten" på automatisk opdatering af baggrundsfarve :o)
Go´ weekend, Nicolai
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.