No, moc jsem to nezkoumal (ono se to ani moc nedá), ale jeden problém tam vidím: při chybě skočíš na návěští "nenalezeno", ale už tu obsluhu chyby neukončíš příkazem RESUME. Takže po skoku je další kód považován za obsluhu chyby. Celý je to navíc zamotaný v tom, že tu obsluhu chyby máš v cyklu "Do While" a v já-nevím-kolikátým-vnořeným IFu, takže z toho při běhu musí zákonitě vzniknout docela slušnej maglajs.
Podívej se, jak se správně obsluha chyb ve VBA má řešit - třeba zde nebo zde.