10. oktober 2000 - 11:24Der er
9 kommentarer og 1 løsning
Overflytte celle farve fra ark 1 til ark2
Jeg skal bruge en kode/formel for at kopiere celle farve fra en celle i et ark til en anden celle i et andet ark, både farve og tekst skal kunne kopieres, og det skal være sådan at når man ændre en farve på det ene ark så ændrer den også på det andet ark automatisk. PFT. :-)
Du kan ikke lave en VBA funktion der ændrer formater.
Du kan godt lave noget kode til sheet_change eventet, sådan at hvergang en celle ændres checkes det i kode hvad det er for en celle og hvis det er de eller de ønskede udføres der formateringsændringer på en eller flere andre celler.
Jeg vil dog anbefale at du først prøver at bruge betinget formatering, hvis farven af cellerne er afhængig af bestemte værdier i regnearket.
Du kan med den betingede formatering definere forskellige formater som skal benyttes i cellen hvis betingelser du også definerer indtræffer. Det kan f.eks være at cellen antager en bestemt værdi. Det kan også være en formel. Så hvis f.eks du i det ene ark definerer at en celle når den bliver < 0 skal blive rød, kan du i et andet ark lave en betinget formatering der betyder at cellen bliver rød hvis den første celle bliver mindre end 0.
Betinget formatering virker ikke i dette tilfælde. Det er en slags kalender som der er lavet og det farverne skal bruges til er at markere de dato hvor man er optaget af et projekt så det eneste der kommer til at stå sammen med farven er navnet på projektet. Håber i kan hjælpe.
Du kan lave en makro og tildele den et kontrolelement i ark 2 og så kan du opdatere ark 2 med denne makromed denne kode Cells.Select Selection.Copy Sheets(\"Ark2\").Select Cells.Select Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False End Sub
Det at man skifter formatering i en celle herunder farve udløser ikke noget event. Man kan derfor ikke få excel til at reagere herpå. Så hvis du blot vil ændre en farve i en celle og herefter ændre farven i en anden celle på du nok køre en makro efter farveændringen.
Hvis du derimod indtaster noget i cellen udløser det et event som du kan programmere f.eks:
Private Sub Worksheet_Change(ByVal Target As Range) Dim AndetArk As Worksheet Dim rng As Range Set AndetArk = Worksheets(\"ark2\") \' Undersøg om cellen der ændres er en del af \' området \"kalender\" Set rng = Intersect(Range(\"kalender\"), Target) \'Hvis ikke så gå ud If rng Is Nothing Then Exit Sub \'Ellers så giver cellen med samme adresse som target i ark2 samme \'farve som target AndetArk.Range(rng.Address).Interior.ColorIndex = Target.Interior.ColorIndex End Sub
Koden lægges ind i et arks Worksheet_Change event. Desuden kræves der et navngivet område i arket med koden med navnet \"kalender\", samt et ark med navnet ark2 hvor farveændringerne vil ske. Du kan evt formatere den intastede tekst i samme farve som cellen hvis du ikke ønsker den skal ses.
Hvis du vil have farveændringer til at ske automatisk kan du måske bruge ark2\'s Worksheet_Activate event som udløses når du aktiverer et worksheet. D.v.s når du går over og kigger på ark 2:
Private Sub Worksheet_Deactivate() Dim Celle As Range For Each Celle In Range(\"kalender\") Worksheets(\"ark2\").Range(Celle.Address).Interior.ColorIndex = Celle.Interior.ColorIndex Next Celle End Sub
Jeg ved selvfølgelig ikke om det er cellerne med de samme adresser i ark2 der skal ændres, men det er i princippet ligegyldigt.
Jeg ser i dit spørgsmål at du også vil have tekst med. Så er Worksheet_Change eventet helt fint (hvis man først ændrer farve og herefter text - men farveændringen kunne du jo lave automatisk som betinget formatering!).
Teksten eller værdien refererer du til som range(\"<navn eller adresse>\").value, så i stedet for \"interior.colorindex\" skives der \"value\"
Jeg kan desværre ikke bruge løsningsforeslaget. For det er ikke alle felter som der bliver skrevet noget i. Det skal forestille en kalender, hvor der hele tiden kun bliver vist 1 måned. Hvis der så er et projekt fra den 10. til den 20. i den måned så farver jeg alle felter fra d. 10. til d. 20. og jeg skriver navnet på projektet i det det første felt ud for d. 10. Men hvis i ikke har løsningen såån.. lige så lad være at bruge mere krudt på det fordi jeg arbejder på et anden løsningsforslag end at skulle overføre farverne.
Det der skal ske\' er at der laves et ark for hver ansat hvori der er en kalender det ark som jeg omtaler som \"andet\" er et ark hvor alle ansattes kalendere bliver ajourført, og det er farverne fra alle ansattes ark som jeg skal have over på det samlede/\"andet\" ark.
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.