Откройте почти любую доставшуюся по наследству книгу, и первая строка под заголовком модуля будет одна и та же. On Error Resume Next. Не вокруг одного рискованного вызова, а в самом верху, для всего.
Как она туда попадает, понятно. Чей-то макрос падает с ошибкой выполнения, кто-то другой вставляет эту строку, макрос перестаёт падать, и все идут дальше. (Заодно он перестаёт делать то, ради чего была нужна упавшая строка, но этого никто не видит.) Инструкция действует до On Error GoTo 0 или до выхода из процедуры, так что в длинном Sub она накрывает гораздо больше, чем ту строку, из-за которой её добавили.
Вторая классика это модуль без Option Explicit. Опечатка в имени переменной тихо создаёт новый Variant, который всегда пуст, а итоги всё равно выглядят правдоподобно.
Синтаксис VBA тут ни при чём. Так бывает, когда следующий человек не может понять, какие ошибки ожидались. Моё лекарство скучное. Включите в редакторе обязательное объявление переменных, чтобы новые модули получали Option Explicit, а единственный рискованный вызов оберните в On Error Resume Next, проверку Err.Number и On Error GoTo 0.