Консультация № 178727
29.05.2010, 13:20
35.77 руб.
0 12 0
Подскажите, вопрос по тексту:
On Error Resume Next 'оператор для отлова ошибок, указывает, что при возникновении ошибки нужно переходить к следующей строке кода
Selection.GoTo What:=wdGoToBookmark, Name:="Дата"
В случае отсутствия закладки:
Номер_ошибки = Err.Number
Текст_ошибки= ???????
В случае отсутствия первой строки скрипта
Можно ли сделать и как чтобы сообщение было с недоступной клавишей
Debug
Спасибо Эндрю

Обсуждение

Неизвестный
29.05.2010, 14:56
общий
Ципихович Эндрю:
Текст_ошибки= ???????
Текст_ошибки = Err.Description
Вот только при отсутствии On Error Resume Next я получаю сообщение об ошибке с кнопками ОК и Справка. Кнопочки Debug нет.
Неизвестный
29.05.2010, 15:23
общий
Andrew Kovalchuk:
Что я могу сказать спасибо за ответ, если Вас поддержат форумчане, оформляйте ответ
У меня лично 4 кнопки
Continue недоступный, это что ????
End
Debug в фокусе
Help
Почему так, догадываюсь Ваш ответ будет вроде Офис плохой, вирусы и т. д.
Неизвестный
29.05.2010, 15:25
общий
Нет но выход есть создать свою форму вывести на неё

Лабаратория Ципиховича сообщает

Номер_ошибки = Err.Number

Текст_ошибки = Err.Description

И одну кнопку
Неизвестный
29.05.2010, 15:32
общий
Ципихович Эндрю:
в меню редактора VBA - Tools - Project Properties - Protection поставьте галочку Lock project for viewing и введите пароль, после этого кнопка Debug будет неактивна
Неизвестный
29.05.2010, 15:40
общий
Ципихович Эндрю:
Цитата: 238244
Continue недоступный, это что ????
Подозреваю, что по причине произошедшей во время выполнения скрипта ошибки среда исполнения считает, что нормальное продолжение невозможно (о чем и свидетельствует недоступность кнопки).
Цитата: 238244
Почему так, догадываюсь Ваш ответ будет вроде Офис плохой, вирусы и т. д.
Ну что вы меня таким деспотом обрисовали - на самом деле я хороший . Сам неоднократно видел сообщения с кнопкой Отладка. Вот только не в этот раз.
Неизвестный
29.05.2010, 15:50
общий
Ципихович Эндрю:
Только еще забыл добавить, что после этого файл нужно будет переоткрыть, т.к. блокировка заработает только после повторного открытия документа
Неизвестный
29.05.2010, 19:14
общий
Andrew Kovalchuk:
Забыл про одну деталь если всё же создать свою форму и выводить её при ошибке
Как быть в том плане, что после каждой строки кода не поставишь ведь условие Если ошибка, тогда показать форму
А где эти ошибки будут бог его знает. Можно ли как то один раз указать, пробовал сам не получилось:
On Error Resume Форма.Show
On ErrorФорма.Show
Неизвестный
29.05.2010, 19:16
общий
Измалков Эдуард Леонидович:
Ответьте на сообщение Выше если знаете
Неизвестный
29.05.2010, 19:33
общий
Ципихович Эндрю:
Цитата: 238244
Как быть в том плане, что после каждой строки кода не поставишь ведь условие Если ошибка, тогда показать форму
А где эти ошибки будут бог его знает. Можно ли как то один раз указать, пробовал сам не получилось:

Можно, если пойти по такому пути:
Код:
Sub OnErrorDemo()
On Error GoTo ErrorHandler 'При возникновении ошибки в приведенных ниже операторах использовать обработчик ошибок начинающийся с метки ErrorHandler
...
...
' Операторы в которых ожидается появление ошибки
...
...
Exit Sub 'выход из процедуры
ErrorHandler: 'метка на начала обработчика ошибок
...
' Операторы по обработке ошибки
...
On Error Resume Next ' Здесь же можно переключить режим обработки ошибок на другой
End Sub
Неизвестный
29.05.2010, 19:49
общий
Измалков Эдуард Леонидович:
Ну точно не деспот - на самом деле Вы хороший
Оформляйте ответ
Неизвестный
29.05.2010, 22:03
общий
Ципихович Эндрю:
Скорее всего не ко мне обращение выше, а к Andrew Kovalchuk. Только можно еще дополнить его ответ, что если Вы использовали одну из двух строк On Error GoTo ErrorHandler либо On Error Resume Next, а далее по ходу работы Вам нужно отключить их, то нужно использовать On Error GoTo 0
Неизвестный
30.05.2010, 06:23
общий
Измалков Эдуард Леонидович:
Спасибо за дополнение к ответу
Форма ответа