View Full Version : Find/Replace, Search Remainder = No
nisaia
10-09-2008, 11:02 AM
Hello,
I am just starting out with recording and modifying macros. I am using Word 2003. I have recorded a macro that does a Find and Replace several times for different criteria. The macro runs on text that is selected so once the Find/Replace feature reaches the end of the selection, a message box appears asking if I want to continue searching the rest of the document. Since the answer will always be no, can I add a line of code that will answer the question; thus, eliminating the appearance of the message box each time the Find/Replace code is run? If so, what would the code for this be?
fumei
10-10-2008, 02:29 PM
It may help if you posted the actual code, but as a suggestion, if this is ONLY for whatever has been selected, you could make a Range object of the Selectiin, and then do the find/replace on that. It would terminate once it reaches the end - no message.Dim r As Range
Set r= Selection.Range
With r.Find
' whatever it is you are doing
End With
nisaia
10-10-2008, 02:48 PM
Hi fumei,
Thank you for your response. Well, actually, I purposefully did not attach the code since I am such a VBA "newbie" and am somewhat embarrassed :nervous: to reveal the extent of my inexperience. But, here goes. I recorded most of this. So, as mentioned previously, I'd like it to run without the pop-up box asking if you want to continue searching at the beginning of the document each time a search/replace function is run.
Sub AAReqts()
'
' AAReqts Macro
' Macro recorded 10/7/2008 by nisaia
'
' ConvertNumberstoText
ActiveDocument.ConvertNumberstoText
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = ".^t"
.Replacement.Text = ". "
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = " """
.Font.Color = wdColorDarkBlue
.Replacement.Text = "^t"
.Forward = True
.Wrap = wdFindAsk
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = """:^p"
.Font.Color = wdColorDarkBlue
.Replacement.Text = "^t"
.Forward = True
.Wrap = wdFindAsk
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "^l"
.Replacement.Text = " "
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Font.Name = "Times New Roman"
.Font.Color = wdColorAutomatic
.Text = "^p"
.Replacement.Text = "^l^t^t"
.Forward = True
.Wrap = wdFindAsk
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = ""
.Font.Color = wdColorDarkBlue
.Replacement.Text = ""
.Replacement.Font.Color = wdColorAutomatic
.Replacement.Font.Italic = False
.Replacement.Font.Bold = False
.Forward = True
.Wrap = wdFindAsk
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "^l^t^t>>><<<"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
' Replace heading font Arial with Times New Roman
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Font.Name = "Arial"
.Replacement.Font.Name = "Times New Roman"
.Replacement.Font.Size = 12
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
fumei
10-14-2008, 10:31 AM
1. Please use the VBA code tags. It makes it easier to read.
2. Again, it would be better to use Range, rather than Selection. Also, as I mentioned, it would also allow you to do your searching (find/replace) without those messages.
3. If I understand it, you have a number of different criteria you are actioning, yes?
.Text = ".^t"
.Replacement.Text = ". "
.Text = " """
.Font.Color = wdColorDarkBlue
.Replacement.Text = "^t"
.Text = "^l"
.Replacement.Text = " "
etc.
You can do that. You simply need to resize the Range object back to the Selection. You stated that it was "selected text", correct?
Dim r As Range
Set r = Selection.Range
With r.Find
.Text = ".^t"
.Replacement.Text = ". "
.Forward = True
.Execute Replace:=wdReplaceAll
End With
' reset Range object for Selection again
' and use it again
Set r = Selection.Range
With r.Find
.Text = " """
.Font.Color = wdColorDarkBlue
.Replacement.Text = "^t"
.Execute Replace:=wdReplaceAll
End With
' reset Range object for Selection again
' and use it again
Set r = Selection.Range
With r.Find
etc. etc.
nisaia
10-17-2008, 03:28 PM
Hi fumei :hi:
Thanks for your help. I think I understand. Let me try this and I'll get back to you in a few days!
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.