Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Глобальная обработка ошибок, как? VBA 
:(
    Опции темы
Medved
Дата 24.6.2005, 03:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: нет
Всего: 154



Сабж.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
likhobory
Дата 24.6.2005, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 466
Регистрация: 17.5.2005
Где: Москва

Репутация: 10
Всего: 20



сей текст


--------------------
PM MAIL   Вверх
Medved
Дата 24.6.2005, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: нет
Всего: 154



Это все хорошо, спасибо за информацию, но мне нужна именно глобальная обработка ошибок, т.е. когда обработка ошибок происходит в одном месте.

Можно конечно через WinAPI выкрутиться, но меня это не устраивает. Это сколько же кода надо писать, у меня времени совсем нет. Да и время чистого WinAPI уже прошло.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
likhobory
Дата 24.6.2005, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 466
Регистрация: 17.5.2005
Где: Москва

Репутация: 10
Всего: 20



ну а кто мешает
Код
Public Sub GlobalHandler (ErrNum As Integer) 
'''''''''''''''''''''
End Sub

Sub InitializeMatrix(Var1, Var2, Var3, Var4)    
    On Error GoTo ОбработкаОшибок    
    . . .    
    Exit Sub    
ОбработкаОшибок:    
   Call GlobalHandler (Err)
   ''''''''''''''''''''''''''''''''''t    
End Sub



--------------------
PM MAIL   Вверх
Medved
Дата 24.6.2005, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: нет
Всего: 154



А... это не глобальная обработка ошибок, это пародия на нее, все равно мне придется локально всезде обрабатывать их, а потом уже передавать в глобальную процедуру. Это не есть гуд, нужно так чтобы эта процедура сама ошибки перехватывала. Лучше уж тогда через WinAPI просто перехватывать виндовозные сообщения об ошибках.

(2likhobory, не обижайтесь пожалуйста, это камень не в ваш огород, еще раз спасибо, что откликнулись и уделили внимание этому вопросу.)


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
likhobory
Дата 24.6.2005, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 466
Регистрация: 17.5.2005
Где: Москва

Репутация: 10
Всего: 20



Pegas, речь ведь шла о VBA, а это максимум, на что он способен,
так что WinApi здесь весьма подходящий костыль smile


--------------------
PM MAIL   Вверх
Medved
Дата 24.6.2005, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: нет
Всего: 154



Понял. Вопрос снят. Что хотел узнать, то узнал. Спасибо.



--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Staruha
Дата 2.7.2005, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1292
Регистрация: 1.2.2004
Где: Казань

Репутация: 13
Всего: 27



likhobory почти как в твоем коде получилось.
Создала таблицу ошибок.Чтение таблицы в модуль кинула.Наверно такая библиотека есть и как в нее влезть?
модуль
Код

Sub hhh()
For rw = 2 To 13
 If Err.Number = Range("A" & rw).Value Then
          MsgBox Range("B" & rw).Value
   Exit For
 End If
Next
End Sub

код
Код

Private Sub Worksheet_Change(ByVal Target As Range)
  On Error GoTo ErrorHandler
         Range("E12").Value = Range("E10").Value / 3
   Exit Sub
 ErrorHandler:
            hhh
 End Sub


Это сообщение отредактировал(а) Staruha - 2.7.2005, 13:22

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  Error.rar 8,32 Kb


--------------------
Возмездие настигнет
PM MAIL   Вверх
likhobory
Дата 2.7.2005, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 466
Регистрация: 17.5.2005
Где: Москва

Репутация: 10
Всего: 20



справедливости ради еще раз замечу, что вышеуказанный перевод "родной" офисной справки принадлежит не мне
а описание возможных ошибок можно получить в той же справке, указав в поиске Trappable Errors
по поводу приведенных примеров, позволь отметить ряд моментов:
в обработчике Worksheet_Change перед изменением значения ячейки пропиши
Код
EnableEvents = False

иначе войдешь в бесконечный цикл, а затем не забудь все вернуть на круги своя
для генерации конкретной ошибки можем использовать метод RAISE, но вне функции обработки ошибок, иначе опять зациклимся, поскольку в указанном примере при генерации ошибки мы попадаем в обработчик родительской процедуры (Worksheet_Change)
Код
'''''''''''''''''''''
On Error GoTo ErrorHandler
Err.Raise {№ошибки}
'''''''''''''''''''''

для получения описания (англоязычного) - Err.Description
Код
Sub hhh ()
'''''''''''''''''''''
MsgBox Err.Description
''''''''''''''''''''''
End Sub


Это сообщение отредактировал(а) likhobory - 2.7.2005, 15:49


--------------------
PM MAIL   Вверх
Staruha
Дата 2.7.2005, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1292
Регистрация: 1.2.2004
Где: Казань

Репутация: 13
Всего: 27



Мне тут долго разбираться. Вот только про зацикливание. Это действительно имело место. Но методом тыка я это устранила и вышеуказанный код не зацикливается.Или это только у меня на компе?


--------------------
Возмездие настигнет
PM MAIL   Вверх
likhobory
Дата 2.7.2005, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 466
Регистрация: 17.5.2005
Где: Москва

Репутация: 10
Всего: 20



Цитата(Staruha @ 2.7.2005, 17:20)
Вот только про зацикливание. Это действительно имело место. Но методом тыка я это устранила

можно поподробнее ??


--------------------
PM MAIL   Вверх
Staruha
Дата 4.7.2005, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1292
Регистрация: 1.2.2004
Где: Казань

Репутация: 13
Всего: 27



Я все поняла,подробней неохота. smile


--------------------
Возмездие настигнет
PM MAIL   Вверх
Staruha
Дата 5.7.2005, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1292
Регистрация: 1.2.2004
Где: Казань

Репутация: 13
Всего: 27



Цитата
Подпрограмма обработки ошибок не может быть процедурой Sub или Function. Эта подпрограмма должна быть частью программы, которая отмечается с помощью метки строки или номера строки.

Как бы мой случай опровергает это.Или я не все поняла?


--------------------
Возмездие настигнет
PM MAIL   Вверх
likhobory
Дата 12.7.2005, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 466
Регистрация: 17.5.2005
Где: Москва

Репутация: 10
Всего: 20



Цитата(Staruha @ 5.7.2005, 21:07)
Как бы мой случай опровергает это.Или я не все поняла?

он это подтверждает, но ты можешь вызывать функцию/процедуру из подпрограммы обработки ошибок, что, собственно и происходит
Код

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ErrorHandler
''''''''''''''''''''''
Exit Sub
ErrorHandler: ' начало {подпрограммы}
'вызов некой процедуры
hhh
End Sub



--------------------
PM MAIL   Вверх
Staruha
Дата 12.7.2005, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1292
Регистрация: 1.2.2004
Где: Казань

Репутация: 13
Всего: 27



smile Спасибо.Догнала


--------------------
Возмездие настигнет
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0598 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.