You can just use ReplaceAll. Also the direction doesn't matter when you are working on the whole range and wrapping.
Code:
Sub SingleBeforeDigit()
'Replace Chr(145) with Chr(146) before a digit (as in ’95)
Dim oRng As Range
Set oRng = ActiveDocument.Range
With oRng.Find
.ClearFormatting
.Text = Chr(145) & "([0-9])"
.Replacement.Text = Chr(146) & "\1"
.Font.Superscript = False 'to avoid footnote reference marks
.Replacement.Highlight = True
.Wrap = wdFindContinue
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
End With
End Sub