A change to the loop exit is required
Sub Test()

    Dim Sh1 As Worksheet
    Dim Sh2 As Worksheet
   
    Set Sh1 = Sheets(1)
    Set Sh2 = Sheets(2)
    For Each cel In Sh2.Columns(1).SpecialCells(2)
        With Sh1.Cells
            Set c = .Find(cel, lookat:=xlPart)
            Do Until c Is Nothing
                If Not c Is Nothing Then
                    c.Value = Replace(c, cel, cel.Offset(, 1))
                End If
                Set c = .FindNext(c)
            Loop
        End With
    Next
End Sub