Avatar billede eijo Nybegynder
11. november 2008 - 21:06 Der er 7 kommentarer og
1 løsning

Word VBA - Formater resten af linien grøn

Jeg er lige startet med VBA i Word. Jeg har lavet en kode der skal finde karakteren '. Denne karakter + resten af linien skal være grøn. og dette skal gentage sig ned gennem hele dokumentet.
Karakteren bliver godt nok grøn, men det er kun den første efterfølgende linie der bliver grøn resten er uændret.

    Selection.Find.ClearFormatting
    With Selection.Find
      .Format = True
      .ClearFormatting
        .Text = "'"
        .Replacement.Text = "^&"
        .Replacement.Font.Color = wdColorBrightGreen
        .Execute Replace:=wdReplaceAll
    End With

    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "'"
        .Replacement.Text = "^&"
        .Forward = True
        .Wrap = wdFindContinue
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.EndKey Unit:=wdLine, Extend:=wdExtend
    Selection.Font.Color = wdColorBrightGreen
    Selection.EndKey Unit:=wdLine
    Selection.MoveRight Unit:=wdCharacter, Count:=1

På forhånd tak
Avatar billede lwi Nybegynder
11. november 2008 - 22:08 #1
jeg tror du er nødt til at "bide den over" du kan ikke farve resten af linjen. Du er nødt til at hoppe ud af "find" farve resten af linjen fra der hvor du er nået til, og så søge igen.

Denne finder d og farver resten af linjen rød
Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "d"
       
    End With
    Selection.Find.Execute
    Selection.EndKey Unit:=wdLine, Extend:=wdExtend
    With Selection.Font
        .Color = wdColorRed
       
    End With
    Selection.MoveRight Unit:=wdCharacter, Count:=1
End Sub
Avatar billede lwi Nybegynder
11. november 2008 - 22:22 #2
Denne vil gøre det samme, men loope 10 gange

Sub Macro22()
'
Dim Check, Counter
Check = True: Counter = 0
Do    ' Outer loop.
    Do While Counter < 20
        Counter = Counter + 1
        If Counter = 10 Then
            Check = False
            Exit Do
        End If
       
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "d"
       
    End With
    Selection.Find.Execute
    Selection.EndKey Unit:=wdLine, Extend:=wdExtend
    With Selection.Font
        .Color = wdColorRed
       
    End With
    Selection.MoveRight Unit:=wdCharacter, Count:=1
   

    Loop
Loop Until Check = False

End Sub
Avatar billede Lene Fredborg Ekspert
11. november 2008 - 22:57 #3
Makroen nedenfor er lavet, så den gentager Find, indtil alle ”’” er fundet. Jeg har skrevet forklaringer i makroen, så du kan se, hvad den laver.

NB I makroen er brugt Selection (ligesom i din makro) til at vælge teksten og gøre noget ved den. Det er bedre at benytte Range, men da du skriver, at du er nybegynder, har jeg lavet makroen med Selection, fordi du så kan se, hvad makroen laver, hvis du i VBA-editoren bruger F8 til at steppe gennem makroen.



Sub FindTegn_FarvRestenAfLinje()

    'Gå til start af dokument
    Selection.HomeKey (wdStory)
   
    With Selection.Find
        .ClearFormatting
        .Text = "'"
       
        'Sørg for, at skærmen ikke opdateres under det følgende
        Application.ScreenUpdating = False
       
        'Find en forekomst ad gangen og lav resten af linjen grøn
        Do While .Execute
            'Nu er oRange det fundne tegn, udvid til hele linjen
           
            With Selection
                .End = .Bookmarks("\Line").End
                'Selection indeholder nu hele linjen
                'Lav grøn
                .Font.Color = wdColorBrightGreen
                'Collapse selection efter linjen
                'så samme linje ikke findes igen
                .Collapse (wdCollapseEnd)
            End With
        Loop
       
        'Ryd op i Find dialogboksen
        .Text = ""

    End With
   
    'Gå til start af dokument
    Selection.HomeKey (wdStory)
   
    'Sæt skærm tilbage til opdatering
    Application.ScreenUpdating = True

    'Ved besked
    MsgBox "Færdig"
 
End Sub
Avatar billede Lene Fredborg Ekspert
11. november 2008 - 23:19 #4
...i en af kommentarlinjerne står der: "Nu er oRange det fundne tegn" - der skulle have stået: "Nu indeholder Selection det fundne tegn"...
Avatar billede eijo Nybegynder
13. november 2008 - 22:08 #5
Hej lene-fredborg

Tak for dit input, jeg er også ny til dette
så hvordan giver jeg dig point
Avatar billede Lene Fredborg Ekspert
13. november 2008 - 22:32 #6
Dette er markeret som et svar. Så skulle du være i stand til at markere, at du accepterer svaret. Jeg har faktisk aldrig selv spurgt om noget - kun svaret på spørgsmål - så jeg har ikke selv prøvet det i praksis ;-)
Avatar billede eijo Nybegynder
13. november 2008 - 22:51 #7
Hej lene-fredborg
Håber det lykkedes så du fik dine point
Avatar billede Lene Fredborg Ekspert
13. november 2008 - 23:05 #8
Jeg tror det ikke. Hvis det er gået rigtig, skal der komme til at stå "Accepteret svar" ud for svaret. Da mit indlæg med selve makroen var lavet som en kommentar, kan den ikke accepteres som et svar. Du er nødt til at bruge det, der er lavet som svar (beklager jeg ikke kan være mere præcis).

NB Jeg håber, du bliver rigtig glad for at arbejde med VBA. TIP: Det kan tit være en hjælp at optage en makro, hvis man skal finde ud af, hvad det er for objekter mm., man skal have fat i. Det kan hjælpe på vej.
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
Kategori
Tag et kursus i Word og øg effektiviteten

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