![]() |
|
#1
|
|||
|
|||
![]()
Greeting to all,
I have been using find and replace through vba. It works fine except, sometimes it replaces whole document instead of just replacing the selection. The code I am using is below: Sub Macro32() ' ' Macro32 Macro ' ' With selection .Find.ClearFormatting .Find.Replacement.ClearFormatting End with With Selection.Find .Text = "^t" .Replacement.Text = "" .Forward = True .Wrap = wdFindStop .MatchWildcards = False End With Selection.Find.Execute Replace:=wdReplaceAll With selection .Find.ClearFormatting .Find.Replacement.ClearFormatting End with With Selection.Find .Text = "(=)" .Replacement.Text = "^t\1" .Forward = True .Wrap = wdFindStop .MatchWildcards = True End With Selection.Find.Execute Replace:=wdReplaceAll End Sub How could I modify this code to just replace the selected area and nothing else? Looking forward for suggestions. Thanks in advance. |
#2
|
||||
|
||||
![]()
You could simplify it and the following should only apply to the selected text:
Code:
Sub Macro32() With Selection.Find .ClearFormatting .Replacement.ClearFormatting .Text = "^t" .Replacement.Text = "" .Forward = True .Wrap = wdFindStop .MatchWildcards = False .Execute Replace:=wdReplaceAll .Text = "=" .Replacement.Text = "^t^&" .Execute Replace:=wdReplaceAll End With End Sub
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
#3
|
|||
|
|||
![]()
Thank you sir, for the reply!!
It works great but now also it replaces outside the selection to the end of the document but when I select only the characters of and apply then only it replaces in the selection but if I select the whole paragraph then it replaces outside of the selection. I have attached a sample file to experiment. |
#4
|
||||
|
||||
![]()
Hmmm.
The following works with your document Code:
Sub Macro32() Dim oRng As Range, oDup As Range Set oRng = Selection.Range Set oDup = Selection.Range With oRng.Find .ClearFormatting .Replacement.ClearFormatting .Text = "^t" .Forward = True .Wrap = wdFindStop .MatchWildcards = False Do While .Execute If oRng.InRange(Selection.Range) Then oRng.Text = "" End If oRng.Collapse 0 Loop End With Set oRng = oDup.Duplicate With oRng.Find .Text = "=" Do While .Execute If oRng.InRange(oDup) Then oRng.Text = vbTab & oRng.Text End If oRng.Collapse 0 Loop End With Set oRng = Nothing Set oDup = Nothing End Sub
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
#5
|
|||
|
|||
![]()
Thank you!!
|
![]() |
Tags |
find |
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
How do you use the find and replace tool to find dates and times in Excel 2013? | Jules90 | Excel | 3 | 04-14-2020 07:40 PM |
In Find and Replace, can Word stop after each Replace? | wardw | Word | 1 | 06-08-2017 02:47 PM |
![]() |
Hoxton118 | Word VBA | 7 | 06-10-2014 05:05 AM |
![]() |
paulkaye | Word | 4 | 12-06-2011 11:05 PM |
Automatic find replace after selection in dropdown | vsempoux | Word | 0 | 10-28-2009 08:45 AM |