Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Не обрабатывается error обработчиком - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Не обрабатывается error обработчиком
fairylive Дата: Воскресенье, 05.07.2020, 05:11 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 122
Репутация: 4 ±
Замечаний: 0% ±

Excel 2016
Доброго всем! Капитально подвис с этими обработчиками ошибок... Вот готовый макрос с какого-то сайта. Справки и кучу форумов уже перечитал. Да и раньше сталкивался с этим и всё работало. В старых моих макросах теперь тоже не работает. Везде примерно такой код. НО ошибки он у меня не ловит. Конкретно тут при нажатии ESC или закрытии диалогового окна возникает ошибка 13. Если прописать тип переменной a as range то ошибка будет 424.
MS Office 2016рус.
Основная суть чтобы во время выбора диапазона через Application.InputBox можно было нажать отмену или ESC и спокойно выйти из процедуры.
[vba]
Код
Sub Test3()
Dim a
On Error GoTo ErrorHandler
Set a = Application.InputBox("Пожалуйста," _
& vbNewLine & "Выберите диапазон:", _
"Наш диалог", , , , , , 8)
MsgBox a.Cells(1)
MsgBox a.Address
Exit Sub
ErrorHandler:
On Error Resume Next
  Select Case Err
    Case 424:  MsgBox "Наверное, борщ отсутствует в справочнике...", vbCritical
    Case 13:    MsgBox "Наверное, у борща проблемы с калорийностью...", vbCritical
  End Select
End Sub
[/vba]
 
Ответить
СообщениеДоброго всем! Капитально подвис с этими обработчиками ошибок... Вот готовый макрос с какого-то сайта. Справки и кучу форумов уже перечитал. Да и раньше сталкивался с этим и всё работало. В старых моих макросах теперь тоже не работает. Везде примерно такой код. НО ошибки он у меня не ловит. Конкретно тут при нажатии ESC или закрытии диалогового окна возникает ошибка 13. Если прописать тип переменной a as range то ошибка будет 424.
MS Office 2016рус.
Основная суть чтобы во время выбора диапазона через Application.InputBox можно было нажать отмену или ESC и спокойно выйти из процедуры.
[vba]
Код
Sub Test3()
Dim a
On Error GoTo ErrorHandler
Set a = Application.InputBox("Пожалуйста," _
& vbNewLine & "Выберите диапазон:", _
"Наш диалог", , , , , , 8)
MsgBox a.Cells(1)
MsgBox a.Address
Exit Sub
ErrorHandler:
On Error Resume Next
  Select Case Err
    Case 424:  MsgBox "Наверное, борщ отсутствует в справочнике...", vbCritical
    Case 13:    MsgBox "Наверное, у борща проблемы с калорийностью...", vbCritical
  End Select
End Sub
[/vba]

Автор - fairylive
Дата добавления - 05.07.2020 в 05:11
anvg Дата: Воскресенье, 05.07.2020, 06:40 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
Доброе время суток.
В настройках часом не такая ситуация?
К сообщению приложен файл: 0548957.png (19.8 Kb)
 
Ответить
СообщениеДоброе время суток.
В настройках часом не такая ситуация?

Автор - anvg
Дата добавления - 05.07.2020 в 06:40
fairylive Дата: Воскресенье, 05.07.2020, 07:02 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 122
Репутация: 4 ±
Замечаний: 0% ±

Excel 2016
anvg, такая...
 
Ответить
Сообщениеanvg, такая...

Автор - fairylive
Дата добавления - 05.07.2020 в 07:02
anvg Дата: Воскресенье, 05.07.2020, 07:31 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
такая...
Вот. А она означает игнорирование обработчиков событий :) Поставьте Break In Class Module.
 
Ответить
Сообщение
такая...
Вот. А она означает игнорирование обработчиков событий :) Поставьте Break In Class Module.

Автор - anvg
Дата добавления - 05.07.2020 в 07:31
fairylive Дата: Воскресенье, 05.07.2020, 18:43 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 122
Репутация: 4 ±
Замечаний: 0% ±

Excel 2016
anvg, а можете подсказать как можно отказаться от этих обработчиков ошибок вообще, я так понял они не желательны так как при разных настройках VBE могут сработать а могут и нет?
Конкретно надо предусмотреть возможность отмены (закрытия) Application.InputBox.
 
Ответить
Сообщениеanvg, а можете подсказать как можно отказаться от этих обработчиков ошибок вообще, я так понял они не желательны так как при разных настройках VBE могут сработать а могут и нет?
Конкретно надо предусмотреть возможность отмены (закрытия) Application.InputBox.

Автор - fairylive
Дата добавления - 05.07.2020 в 18:43
anvg Дата: Понедельник, 06.07.2020, 08:45 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
как можно отказаться от этих обработчиков ошибок вообще
Проверять перед каждым шагом возможность того, что некоторые данные, которые будут использоваться в нём, не удовлетворяют условиям использования. Но! В силу особенностей объектной модели, это фактически не возможно. Например, ListObject объект может содержать объект внешних данных QueryTable, но, увы, без обработчика событий вы это не сможете выяснить. Поэтому нужно как-то договариваться с пользователями, чтобы они не лезли в настройки. Единственное что нашёл по управлению Error Trapping, опять же, это работает, судя по ответу, только в Access. Скорее всего где-то это регистрируется в реестре... Но как правило изменения в нём могут потребовать перезагрузки Excel.
 
Ответить
Сообщение
как можно отказаться от этих обработчиков ошибок вообще
Проверять перед каждым шагом возможность того, что некоторые данные, которые будут использоваться в нём, не удовлетворяют условиям использования. Но! В силу особенностей объектной модели, это фактически не возможно. Например, ListObject объект может содержать объект внешних данных QueryTable, но, увы, без обработчика событий вы это не сможете выяснить. Поэтому нужно как-то договариваться с пользователями, чтобы они не лезли в настройки. Единственное что нашёл по управлению Error Trapping, опять же, это работает, судя по ответу, только в Access. Скорее всего где-то это регистрируется в реестре... Но как правило изменения в нём могут потребовать перезагрузки Excel.

Автор - anvg
Дата добавления - 06.07.2020 в 08:45
fairylive Дата: Понедельник, 06.07.2020, 10:36 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 122
Репутация: 4 ±
Замечаний: 0% ±

Excel 2016
Ок. Спасибо. Решил что в моём случае можно обойтись и без обработчика. У меня просто по логике программы надо было 2-3 раза выбрать диапазон на листе. Иногда уже после запуска программы обнаруживается что нужных данных на листе нет. Поэтому нужен выход из процедуры, чтобы не выбирать левые данные и не тратить время. В итоге по нажатию ESC (отмены) вылезает ошибка. Ну в каком-то роде желаемого мы добились. Ситуация довольно редкая сама по себе, так что терпимо. Не могу только понять почему это не делается красиво изначально. Ведь у Application.InputBox есть кнопка Отмена! Также как вариант в интернетах подсказывают сделать свою форму. Может чуть позже реализую.
 
Ответить
СообщениеОк. Спасибо. Решил что в моём случае можно обойтись и без обработчика. У меня просто по логике программы надо было 2-3 раза выбрать диапазон на листе. Иногда уже после запуска программы обнаруживается что нужных данных на листе нет. Поэтому нужен выход из процедуры, чтобы не выбирать левые данные и не тратить время. В итоге по нажатию ESC (отмены) вылезает ошибка. Ну в каком-то роде желаемого мы добились. Ситуация довольно редкая сама по себе, так что терпимо. Не могу только понять почему это не делается красиво изначально. Ведь у Application.InputBox есть кнопка Отмена! Также как вариант в интернетах подсказывают сделать свою форму. Может чуть позже реализую.

Автор - fairylive
Дата добавления - 06.07.2020 в 10:36
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!