Em Range.FindNext
no MSDN :
When the search reaches the end of the specified search range, it wraps around to the beginning of the range. To stop a search when this wraparound occurs, save the address of the first found cell, and then test each successive found-cell address against this saved address.
Então, em vez disso:
If Not Code Is Nothing Then Do Until Code Is Nothing
Você vai querer algo assim:
Dim firstFoundAddress As String
If Not Code Is Nothing Then
firstFoundAddress = Code.Address
Do
'...
Set Code = .FindNext(Code)
While firstFoundAddress <> Code.Address
End If