In Word VBA, Replace:=wdReplaceAll changes every match. To change only the first occurrence, run Find.Execute once on a Range and assign the replacement text directly to the matched Range.
Why ReplaceAll Cannot Stop After One Match
After a successful Find, Word redefines the Range as the matched text. That makes a one-time replacement straightforward. ReplaceAll intentionally continues through the search range and cannot represent a first-match-only requirement.
Replace the First Occurrence with a Range

Sub ReplaceFirstOccurrence()
Dim target As Range
Set target = ActiveDocument.Content
With target.Find
.Text = "Samantha Wynne (Prebbleton)"
.Forward = True
.Wrap = wdFindStop
End With
If target.Find.Execute Then target.Text = "Samantha Wynne"
End Sub- Test on a copy of the document.
- Set the Range to the intended document scope.
- Run Find.Execute once with wdFindStop.
- Assign the new text only when Find returns True.
- Confirm later matches remain unchanged.
Use Find and Replace Manually for One Edit
Press Ctrl+H, enter the original and replacement phrases, choose Find Next, and select Replace once. This is a different, non-macro mechanism.
Check Story Ranges and Formatting
Headers, footers, text boxes, and the main document use separate story ranges. Replacing Range.Text may also require formatting code if the match carries special formatting.
Use WPS Writer for a Manual First-Match Edit
WPS Office cannot guarantee compatibility with every Word VBA object-model call. For a one-time local DOCX edit, WPS Writer is a free alternative with familiar Find and Replace controls.
Open a duplicate, find the phrase, choose the single Replace action instead of Replace All, inspect the next occurrence, and save separately.

Replace Only the First Match with Word VBA FAQs
Why does wdReplaceAll change every occurrence?
That constant explicitly continues through the search range. Use Find.Execute once for the first match only.
Why did the macro duplicate the original name?
The replacement expression included the search phrase as well as the new text.
Can the macro search one paragraph only?
Yes. Initialize the Range from that paragraph instead of ActiveDocument.Content.
Will it search headers and text boxes?
Not automatically. Those locations use separate Word story ranges.




