First, there is no need to
will return false when there is no row.
The location of the For Each is questionable. Why put it inside the While and that is the culprit that causes "multi reading". It should be placed after the End While.