Давайте проясним это. Обработка ошибок не должна использоваться, чтобы найти проблемы с вашим кодом. VBA уже проделал хорошую работу в этом направлении и остановит программу или откажется компилировать.
Обработка ошибок предназначена для исключений, т. Е. Когда вы используете ресурс вне вашего контроля, который может привести к сбою программы из-за отсутствия по своей вине. В этом случае вы должны перехватить ошибку и решить, что с ней делать.
Чтобы устранить ошибки logi c в вашем коде, убедитесь, что вы сделали следующее.
-
Удалите все сообщения об ошибках, которые у вас есть, из вашего кода.
У вас есть Option Explicit в начале каждого модуля / класса
Вы можете выполнить проект Debug.Compile без каких-либо ошибок.
Вы установили надстройку Fantasti c RubberDuck и исправили все найденные результаты проверки кода.
Теперь вы должны остаться в ситуации, когда единственными ошибками, с которыми вы сталкиваетесь, являются ошибки, вызванные внешними событиями (исключениями).
Для этих окончательных ошибок не используйте Типичный On error Перейти к типу обработки ошибок вы видите во многих примерах (и как используется в вашем коде). Вместо этого инкапсулируйте строку, которая может вызвать ошибку между On Error Resume Next и On Error GoTo 0: тем самым эмулируя структуру «Try catch», наблюдаемую в других известных языках программирования.
В этой статье содержится хорошая информация о Лучшая практика обработки ошибок https://rubberduckvba.wordpress.com/2019/05/
Из вышеперечисленного № 4 наиболее вероятно, где вы найдете любые тонкие ошибки, которые вы сделали.
Удачи