![]() |
|
|
|
#1
|
|||
|
|||
|
Hi
I have this code below where I am looking for a certain character style, replacing the character two spaces preceding it with a comma (when text in the character style is "abc") and inserting a period immediately following the character style regardless of the text. I have it working, but when I tried to do a loop it won't end. I've found that my method is probably not the correct one, but I can't figure out how to do it any other way. Is there a way to just tell the program to find an ending point that it will actually find? Code: Code:
Sub Macro9()
'
' Macro9 Macro
'
Do Until ActiveDocument.Bookmarks("\Sel") = ActiveDocument.Bookmarks("\EndOfDoc")
Selection.Find.ClearFormatting
Selection.Find.Style = ActiveDocument.Styles("one_car")
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "abc"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
Selection.MoveLeft Unit:=wdCharacter, Count:=2
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
Selection.TypeText Text:=","
Selection.Find.ClearFormatting
Selection.Find.Style = ActiveDocument.Styles("one_car")
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.TypeText Text:="."
Loop
End Sub
Thanks! Last edited by macropod; 10-11-2013 at 07:49 PM. Reason: Added code tags & formatting |
|
#2
|
||||
|
||||
|
Try:
Code:
Sub Demo()
Application.ScreenUpdating = False
Dim Rng As Range
Set Rng = ActiveDocument.Range
With ActiveDocument.Range
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.Format = True
.Forward = True
.Wrap = wdFindStop
.Text = "abc"
.Style = "one_car"
.Replacement.Text = ""
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute
End With
Do While .Find.Found
.MoveStart Unit:=wdCharacter, Count:=-3
.InsertBefore ","
.Collapse wdCollapseEnd
.Find.Execute
Loop
.Start = Rng.Start
With .Find
.Text = ""
.Execute
End With
Do While .Find.Found
.InsertAfter "."
.Collapse wdCollapseEnd
.Find.Execute
Loop
End With
Application.ScreenUpdating = True
End Sub
Code:
Sub Demo()
Application.ScreenUpdating = False
With ActiveDocument.Range
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.Format = True
.Forward = True
.Wrap = wdFindStop
.Text = "abc"
.Style = "one_car"
.Replacement.Text = ""
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute
End With
Do While .Find.Found
.MoveStart Unit:=wdCharacter, Count:=-3
.InsertBefore ","
.Collapse wdCollapseEnd
.Find.Execute
Loop
With .Find
.Text = ""
.Replacement.Text = "^&."
.Wrap = wdFindContinue
.Execute Replace:=wdReplaceAll
End With
End With
Application.ScreenUpdating = True
End Sub
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
|
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
How to a For loop in VBA
|
Jennifer Murphy | Word VBA | 1 | 01-29-2013 03:30 AM |
| How to use for loop in formula in VBA? | tinfanide | Excel Programming | 1 | 12-06-2011 08:33 AM |
| While loop not working right | Cbrehm | Excel Programming | 0 | 05-11-2011 11:05 AM |
Alter right click menu?
|
markg2 | Office | 1 | 01-10-2011 08:10 AM |
Continuous Loop
|
cksm4 | Word | 6 | 01-06-2011 09:03 PM |