Your code doesn't compile. Why bother declaring some variables if you are not going to declare all of them. What is ckfontCr?
You have to reset the range with each loop:
Private Sub oYellow_Click()
Call CrHL("test,boy", wdYellow, wdColorYellow)
End Sub
' [ CrHL ]
Sub CrHL(ByVal f As String, _
ByVal HL As Long, _
ByVal Cr As Long)
Dim A As Variant
Dim rng As Range
Dim i, ckFontCr
Dim oRng As Range
Application.ScreenUpdating = False
'-------------------
A = Split(f, ",")
'Set oRng = Selection.Range.Duplicate
For i = LBound(A) To UBound(A)
Set rng = Selection.Range.Duplicate
'-------------------
With rng
While .Find.Execute(A(i)) And .InRange(rng)
' Cr
Select Case ckFontCr
Case True: .Font.Color = Cr
Case False: .HighlightColorIndex = HL
End Select
Wend
End With
Next
'End With '-------------------
'Unload Me
End Sub