Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.02.2012, 20:02   #1
Randy.Mandy
Пользователь
 
Регистрация: 26.12.2011
Сообщений: 45
По умолчанию обработчик события OnError

Здравствуйте!
У меня совсем глупый вопрос.
Скажите, пожалуйста, обработчик события OnError может быть применён по всему коду программы? Или его ставят только в том месте, где, вероятно,по каким-то причинам может возникнуть ошибка?
Randy.Mandy вне форума Ответить с цитированием
Старый 04.02.2012, 22:29   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

По-разному бывает. Во-1, подавление ошибки включают там, где состояние ошибки является ожидаемым результатом. Например: если в книге нет листа с определенным именем, создать его:
Код:
Sub gg()
Dim a, theSheet
a = "SomeName"
On Error Resume Next
Set theSheet = Sheets(a)
If Err Then
    Err.Clear
    Set theSheet = Sheets.Add
    theSheet.Name = a
End If
'работа с объектом theSheet
End Sub
Включить ли дальше обработку ошибок - зависит от важности задачи, которую выполняет код. Если он производит расчеты, влияющие на результат, то обработку ошибок надо включить. Иначе в случае ошибки результат получится неверный, но сообщения об этом не будет.
Если же код выполняет роль "звоночков и свисточков", обработку ошибок можно не включать. Например, код подсвечивает строку и столбец активной ячейки и срабатывает при каждом перемещении курсора. Если в коде возникает ошибка, то при подавлении ошибок подсветки не будет (что печально, но терпимо), а при включенных ошибках будет появляться сообщение при каждом перемещении курсора, что неприемлемо.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619

Последний раз редактировалось Казанский; 04.02.2012 в 22:43.
Казанский вне форума Ответить с цитированием
Старый 04.02.2012, 23:10   #3
Randy.Mandy
Пользователь
 
Регистрация: 26.12.2011
Сообщений: 45
По умолчанию

Спасибо Вам за ответ!

Цитата:
Если он производит расчеты, влияющие на результат, то обработку ошибок надо включить. Иначе в случае ошибки результат получится неверный, но сообщения об этом не будет.
Абсолютно тот самый случай!!!
Влияет! очень влияет!
Скажите, а как в случае возникновения ошибки, сделать переход на метку, которая после выдачи сообщения о том,что ошибка произошла, делает выход из программы(закрывает приложение Эксель), а в случае, если ошибки нет, то продолжает код? Дело в том,что если ошибки не возникает, то всё равно из-за наличия строки в коде процедуры после Errors1:
Код:
Application.Quit
программа закрывается, а в этом необходимости нет.

Код:
....
On Error GoTo Errors1
' место, где может возникнуть ошибка 
......
........
Errors1:
MsgBox ("Произошла ошибка. Перезапустите программу.")
Application.Quit
вот как разграничить метку с выходом из программы с случае ошибки с тем,что бы выхода не было, если ошибки не возникает?

Спасибо.

Последний раз редактировалось Randy.Mandy; 04.02.2012 в 23:21.
Randy.Mandy вне форума Ответить с цитированием
Старый 04.02.2012, 23:26   #4
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Очень просто
Код:
....
On Error GoTo Errors1
' место, где может возникнуть ошибка 
......
Exit Sub '!!!

Errors1:
MsgBox ("Произошла ошибка. Перезапустите программу.")
Application.Quit
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 05.02.2012, 01:20   #5
Randy.Mandy
Пользователь
 
Регистрация: 26.12.2011
Сообщений: 45
По умолчанию

Очень помогло !!!
Спасибо огромное!!
Randy.Mandy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработчик события yardie Общие вопросы .NET 3 26.03.2011 18:30
Обработчик перенаправленного события nusik Общие вопросы C/C++ 1 30.03.2010 07:38
Предопределенный обработчик события nikmay Общие вопросы Delphi 13 15.07.2009 15:48
Динамический обработчик события SKYDOS Помощь студентам 2 11.04.2008 06:46
Обработчик события... Flash_ Gamedev - cоздание игр: Unity, OpenGL, DirectX 12 12.03.2007 21:24