11. november 2008 - 21:06Der 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
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
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
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
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 ;-)
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.
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.