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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2012, 20:18   #1
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию Обработчик ошибок

Помогите разобраться с сабжем.
Создаю из VBA Имена в Excel. И хочу контролировать удачно или нет прошло создание или нет. Использую этот код:
Код:
On Error Resume Next: Err.Clear
a = Err   'a=0
w = [п_Фирма_НазваниеКраткое]    ' w = "ООО 'Рога и Копыта'"
Names.Add "п_Фирма_НазваниеКраткое", "=1111"
w = [п_Фирма_НазваниеКраткое]    ' w = "1111"
a = Err    'a=40040
If Err Then MsgBox "Не удается создать имя:" & vbCrLf & "п_Фирма_НазваниеКраткое", vbCritical: Exit Sub
Как видно из кода, изменение значение Имени произошло, но при этом так же значение Err стало отлично от нуля, что рассматривается как "произошла ошибка", и срабатывает аварийный выход (хотя операция была выполнена).
Где я ошибаюсь?
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 18.01.2012, 20:42   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

вы смотрите наличие ошибки там где вы его смотрите, это не значит что ошибка ошибку вызвал предыдущий оператор.
пройдитесь в пошаговом режиме и посмотрите, где она приключилась.
Names.Add "п_Фирма_НазваниеКраткое", "=1111"вы пытаетесь в список имен добавить новое имя, а я вижу, что строкой выше такое уже использовалось, т.е. уже существует в списке имен. это ошибка.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 18.01.2012, 20:43   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

А если убрать On Error Resume Next, и посмотреть, на какой строке остановится макрос?
EducatedFool вне форума Ответить с цитированием
Старый 18.01.2012, 22:29   #4
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
А если убрать On Error Resume Next, и посмотреть, на какой строке остановится макрос?
Если убрать, макрос отработает без проблем. Все Имена будут пересозданы. На текущий момент я отключил эти строки. Но ведь нет ни какой гарантии, что всегда все будет идеально. Например, может быть неприемлемое имя, или содержание.
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 18.01.2012, 22:34   #5
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
вы смотрите наличие ошибки там где вы его смотрите, это не значит что ошибка ошибку вызвал предыдущий оператор.
пройдитесь в пошаговом режиме и посмотрите, где она приключилась.
Names.Add "п_Фирма_НазваниеКраткое", "=1111"вы пытаетесь в список имен добавить новое имя, а я вижу, что строкой выше такое уже использовалось, т.е. уже существует в списке имен. это ошибка.
Да, такое Имя есть. Задача, макроса создать (или обновить, если уж есть) содержание Имен на автомате.
Возможно excel ругается на то что Имя уже есть, но содержание Имени все же меняет. Что меня вполне устраивает. Значит ли это что можно просто игнорировать этот код ошибки (подправим IF)?
Завтра попробую провести ряд тестов, голова сегодня уже не варит.
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработчик ошибок. DennerV Общие вопросы Delphi 11 12.08.2010 14:05
Обработчик ошибок XPAiN Microsoft Office Excel 3 21.04.2008 09:30
Обработчик ошибок. Dj_smart Общие вопросы Delphi 17 30.03.2008 11:58
Свой обработчик ошибок для TImage Aslan Мультимедиа в Delphi 8 29.11.2007 11:54