Определенная приложением или объектом ошибка
Это сообщение появляется, когда ошибка, созданная с помощью метода Raise или инструкции Error, не соответствует ошибке, определенной Visual Basic для приложений. Оно вызывается также функцией Error для аргументов, не соответствующих ошибкам, определенным Visual Basic для приложений. Таким образом, это может быть ошибка, определенная вами или объектом, включая ведущие приложения, такие как Microsoft Excel, Visual Basic и т. д. Например, формы Visual Basic создают связанные с формами ошибки, которые нельзя создать из программы, просто указав номер в качестве аргумента метода Raise или функции Error. Это сообщение имеет следующие причины и решения:
Приложение выполнило оператор Err.Raisen или Errorn, но номер n не определен программой Visual Basic для приложений. Если это то, что требовалось, используйте Err.Raise и задайте дополнительные аргументы, чтобы конечному пользователю была понятна суть ошибки. Например, можно добавить строку описания, источник и справочную информацию. Чтобы повторно создать ошибку, которую вы перехватили, не следует выполнять перед этим Err.Clear. Если вначале выполнялась Err.Clear, нужно добавить дополнительные аргументы для метода Raise. Убедитесь, что воссоздаете ту же ошибку, просмотрев ее контекст;
при доступе к объектам из других приложений на вашу программу могла распространиться ошибка, которую нельзя сопоставить с ошибкой Visual Basic.
Просмотрите в документации описание объектов, к которым был доступ. У объекта Err свойство Source должно содержать программный идентификатор приложения или объекта, в котором создана ошибка. Чтобы понять контекст ошибки, возвращаемой объектом, вы можете использовать конструкцию On Error Resume Next, а не синтаксис строкиOn Error GoTo в коде для получения доступа к объектам.
Перечисление перехватываемых ошибок для ведущего приложения
Ранее программисты, как правило, использовали цикл для вывода всех строк с сообщениями об ошибках, которые можно перехватить. Обычно это описывалось в таком коде:
For index = 1 to 500
Debug.Print Error$(index)
Next index
Такой код по-прежнему перечисляет все сообщения об ошибках Visual Basic для приложений, но отображает сообщение "Application-defined or object-defined error" ("Ошибка, определенная приложением или объектом") для ошибок, определенных ведущими приложениями (например для тех, которые в Visual Basic относятся к формам и элементам управления). Многие из этих ошибок являются перехватываемыми ошибками выполнения. Используйте диалоговое окно Поиск в разделе справки, чтобы найти список перехватываемых ошибок вашего ведущего приложения. Щелкните Search (Поиск), введите trappable (перехватываемые) в первом поле ввода и нажмите Show Topics (Показать темы). Выберите Trappable Errors (Перехватываемые ошибки) в нижнем окне списка и нажмите Go To (Перейти).
Для получения дополнительной информации выберите необходимый элемент и нажмите клавишу F1 (для Windows) или HELP (для Macintosh).
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.