Avatar billede HHA Professor
18. juli 2022 - 11:40 Der er 9 kommentarer og
1 løsning

VBA kopiere tekst i farver til anden celle

Hejsa,

Jeg ønsker at kopiere tekst fra et ark til et andet, men ønsker at have tekstfarven med. Teksten kan være i flere farver i samme celle.
Har nedenstående kode til at overføre.


Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet
    Dim LR1 As Long, LR2 As Long, LR3 As Long, LR4 As Long, n As Long, i As Long, b As Long, Lastrow As Long
   
    Application.ScreenUpdating = False
   
    Set ws1 = Sheets("Kalk")
    Set ws2 = Sheets("Tilbud dansk")
    Set ws3 = Sheets("Tilbud Engelsk")
    Worksheets("Tilbud dansk").Unprotect
    Worksheets("Tilbud engelsk").Unprotect
   
    ws2.Range("A106:A" & Rows.Count).ClearContents
    ws2.Range("B106:B" & Rows.Count).ClearContents
    ws2.Range("C106:C" & Rows.Count).ClearContents
    ws2.Range("D106:D" & Rows.Count).ClearContents
    ws2.Cells.Borders.LineStyle = xlLineStyleNone
   
    LR1 = ws1.Range("B" & Rows.Count).End(xlUp).Row
    ActiveSheet.Unprotect
   
   
   
    LR2 = 106
   
    For i = 20 To LR1
     
       
        If ws1.Range("B" & i).Value = ("TEKST") And ws1.Range("M" & i).Value = ("JA") Then
            ws2.Cells(LR2, "A").Value = ws1.Cells(i, "A").Value
            ws2.Cells(LR2, "A").Font.FontStyle = "Calibri"
            ws2.Cells(LR2, "A").BorderAround xlContinuous
            ws2.Cells(LR2, "A").Font.Size = 12
            ws2.Cells(LR2, "A").Font.Color = HVAD SKAL DER STÅ HER
           
            ws2.Cells(LR2, "B").Value = ws1.Cells(i, "D").Value
            ws2.Cells(LR2, "B").Font.FontStyle = "Calibri"
            ws2.Cells(LR2, "B").BorderAround xlContinuous
            ws2.Cells(LR2, "B").Font.Size = 12
           
            ws2.Cells(LR2, "C").Value = ws1.Cells(i, "AA").Value
            ws2.Cells(LR2, "C").Font.FontStyle = "Calibri"
            ws2.Cells(LR2, "C").BorderAround xlContinuous
            ws2.Cells(LR2, "C").NumberFormat = "#,##0"
            ws2.Cells(LR2, "C").Font.Size = 12
           
            ws2.Cells(LR2, "D").Value = ws1.Cells(i, "AA").Value
            ws2.Cells(LR2, "D").Font.FontStyle = "Calibri"
            ws2.Cells(LR2, "D").BorderAround xlContinuous
            ws2.Cells(LR2, "D").NumberFormat = "#,##0.00"
            ws2.Cells(LR2, "D").Font.Size = 12
           
   
            LR2 = LR2 + 1
       
        'End If
       
        ElseIf ws1.Range("B" & i).Value = "JA" Then
            ws2.Cells(LR2, "A").Value = ws1.Cells(i, "A").Value
            ws2.Cells(LR2, "A").BorderAround xlContinuous
            ws2.Cells(LR2, "A").Font.Size = 12
            ws2.Cells(LR2, "A").Font.FontStyle = "Calibri"
            ws2.Cells(LR2, "B").Value = ws1.Cells(i, "D").Value
            ws2.Cells(LR2, "B").BorderAround xlContinuous
            ws2.Cells(LR2, "B").Font.Size = 12
            ws2.Cells(LR2, "B").Font.FontStyle = "Calibri"
            ws2.Cells(LR2, "C").Value = ws1.Cells(i, "R").Value
            ws2.Cells(LR2, "C").BorderAround xlContinuous
            ws2.Cells(LR2, "C").NumberFormat = "#,##0"
            ws2.Cells(LR2, "C").Font.Size = 12
            ws2.Cells(LR2, "C").Font.FontStyle = "Calibri"
            ws2.Cells(LR2, "D").Value = ws1.Cells(i, "Q").Value
            ws2.Cells(LR2, "D").BorderAround xlContinuous
            ws2.Cells(LR2, "D").NumberFormat = "#,##0.00"
            ws2.Cells(LR2, "D").Font.Size = 12
            ws2.Cells(LR2, "D").Font.FontStyle = "Calibri"
           
        LR2 = LR2 + 1
                 
           
        End If
       
                   
    Next i
Avatar billede claes57 Ekspert
18. juli 2022 - 21:35 #1
og
ws1.Cells(i, "A").Font.Color
dur ikke?
Avatar billede HHA Professor
19. juli 2022 - 10:02 #2
Hej claes57

Nej, umiddelbart ikke.
Måske jeg gør noget forkert.

Jeg har dette og det virker ikke:

ws3.Cells(LR2, "B").Value = ws1.Cells(i, "D").Value
ws3.Cells(LR2, "B").BorderAround xlContinuous
ws3.Cells(LR2, "B").Font.Size = 12
ws3.Cells(LR2, "B").Font.FontStyle = "Calibri"
ws3.Cells(LR2, "B").Value = ws1.Cells(i, "D").Font.Color
Avatar billede claes57 Ekspert
19. juli 2022 - 12:33 #3
ws2.Cells(LR2, "A").Font.Color = ws1.Cells(i, "A").Font.Color
burde jo virke, når
ws3.Cells(LR2, "B").Value = ws1.Cells(i, "D").Font.Color
kan det...
Avatar billede HHA Professor
19. juli 2022 - 13:20 #4
åhhh, nej.

Det er bare der jeg har sat den ind. Jeg skal bruge den i B og D.
Men den virker heller ikke i A og A.
Det var bare for at vise hvordan jeg havde den sat ind i koden, jeg kunne jo nemt have lavet noget forkert.

Betyder det noget at teksten, der skal kopieres er både sort og farvet?
Mener at have stødt på det, ved google søgning.
Avatar billede claes57 Ekspert
19. juli 2022 - 13:56 #5
Du får kun den farve, der er 'master' for cellen. Andre farvede tegn vil få 'master' farven.
Avatar billede HHA Professor
19. juli 2022 - 14:13 #6
Hmmm, der kommer kun sort tekst over.
Selv om jeg har lavet hele teksten blå i en celle, så er den sort når den overføres.
Avatar billede claes57 Ekspert
19. juli 2022 - 17:27 #7
du skal nok højreklikke i cellen, og så vælge 'formatér celle' og der i 'Skrifttype' vælge font-farven. Det er ikke nok at farve tekst - der er jo cellens værdi, du aflæser.
Avatar billede HHA Professor
20. juli 2022 - 08:05 #8
Den er jeg ikke helt med på....

Jeg har et ark, hvor jeg skriver en tekst og noget af teksten bliver markeret med en farve, for at gøre opmærksom på det der er skrevet.
Den farvede tekst kan være rød, blå eller hvilken som helst farve.
Cellerne er kan være nogle der bliver sat ind med en VBA eller en VBA der henter dem fra et andet ark.

Når jeg så er færdig med at lave kalkulationen, så over fører jeg det til et 3 ark med en VBA og her opbygger den så linjerne efterhånden som der er brug for dem. Det er den kode jeg satte ind i første indlæg.

Så jeg er ikke helt sikker på hvad du mener jeg skal gøre med at vælge font farve.
Avatar billede HHA Professor
22. juli 2022 - 11:00 #9
Hej claes57,

Du har da ret, det virkede efter at bruge denne:
ws2.Cells(LR2, "A").Font.Color = ws1.Cells(i, "A").Font.Color
Jeg havde misset .Font.Color før = tegnet 🙈

Takker!

Som du skriver, så tager den kun "master" farven.
Er det muligt at få den til at overføre 2 forskellige farver fra samme celle?
Avatar billede claes57 Ekspert
22. juli 2022 - 12:24 #10
Så skal du på en eller anden måde kunne singlesteppe gennem alle tegn i en celle, og aflæse deres egenskaber. Det har jeg ikke set...
Muligvis kan du få inspiration via https://www.youtube.com/watch?v=Nx1Y1a20J98
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

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