imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 08.02.2003, 21:09     # 1
Шкипер
Guest
 
Сообщения: n/a

Обработка ошибок в VBA: Ctrl+Break не ловится, не растет кокос...

1) В Excel'е (MS Office 97) крутится макрос, обработка таблицы в цикле. Дело может быть долгим, поэтому резонно дать пользователю возможность прервать его выполнение. Ставится ловушка ошибок On Error, но нажатие Ctrl+Break не ловится. Ладно, пишется тестовая программа:

Sub ErrTrap()
On Error GoTo ErrHand
Err.Raise 18
Do
Loop
Exit Sub

ErrHand:
MsgBox Err.Number & vbCr & Err.Description
Resume Next
End Sub

В 3-й строке программно генерится ошибка с кодом 18 - «Произошло прерывание, вызванное пользователем», ловится нормально, управление передается обработчику. Управа возвращается в вызывающую программу, начинает крутиться мертвый цикл Do...Loop. Жмется Ctrl+Break или Esc - следует системное сообщение об ошибке «Выполнение программы прервано». Что за епть? Получается, Ctrl+Break генерит не 18 ошибку? А почему Ctrl+Break не ловится? А чем тогда вызывается 18 ошибка? И как тогда прерывать выполнение программы с клавиатуры?

2) В продолжение п. 1. Как альтернативу можно было сделать форму с кнопкой, при нажатии на которую прерывалось бы выполнение, да и индикатор выполнения не помешал бы, но в MS Office 97 все формы модальные. Можно ли все-таки как-то исхитриться и во время выполнения повесить диалоговое окно? Может быть, Win API может помочь?

3) А в MS Project 2000 ошибки вообще не ловятся, никакие - управление обработчику ошибок просто не передается. В той же самой тестовой программе из п. 1, перенесенной в модуль Project'а, все ошибки перехватываются внутренним обработчиком, но в программный не попадают. В чем причина-то...?
 
Старый 08.02.2003, 21:17     # 2
Шкипер
Guest
 
Сообщения: n/a

(Извиняюсь за отсутствие отступов, пробелы в начале строки куда-то испарились.)
 


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 01:09.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.