For Each Cell in Search Range
loop will process each and every cell in the search range once only. allowing you to run though the search range once.
If you want to stop the process after finding the first instance of the keyword the you should use either
depending on whether you're coding in a Sub or Function, after the lines of code unhiding the row.
If niether of these comments are helpful it may be worthwhile posting the actual code here and describing the problem in a bit more detail so that we can work out what specifically is the problem.