Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
VBA - самопроизвольное прерывание выполнения программы
 
Такая вот проблема временами появляется - запускаю какую-нибудь процедуру на VBA, обычно весьма объемную, и вдруг она сама начинает прерываться - "Code has been interrurted", нажимаю Continue, и через пару секунд опять тоже самое... ну и так до упора, проходит только при перезагрузке компьютера...
Может, кто-нибудь знает причину этого дела, и возможно ли с ним бороться?..
 
Без самого кода никто Вам точную причину не назовет. Перерывание может происходить из-за нехватки памяти, неверном обращении к сторонним объектам и много чего еще.

Еще подобное может наблюдаться даже если код нормален. Как правило в циклах. Можно попробовать побороть так:
-Получили сообщение от VBE "Code Execution has been interrupted".
-Жмем "Debug", затем Ctrl+Break, затем кнопку "Play" на панеле редактора VBE(зеленый такой треугольничек - продолжает выполнения кода).

По идее ошибка должна исчезнуть.

Еще можно ошибку исключить, добавив строку: Application.EnableCancelKey = xlDisabled
Только не забудьте вернуть его потом в Enabled.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Почитайте про Application.EnableCancelKey Property
Возможно, какое-то приложение посылает сочетание клавиш Ctrl+Break или другое.
Попробуйте установить это свойство в xlDisabled - но тогда Вы не сможете прервать зациклившуюся процедуру.
 
Хорошо, посмотрю... Хотя сейчас вот пока все нормально работает... Странно, что появляется это неизвестно из-за чего, т.е программа работает-работает несколько раз до конца, потом чего-то там редактируешь, и начинаются прерывания, причем никакой ошибки-то не выдает, жми 1000 раз Continue, или сколько там надо, и все до конца доработает, если не задолбаешься жать-то...
Причем закрыть и открыть Excel не помогает, только перезагрузка...
Изменено: denis76 - 27 Фев 2013 16:23:50
Страницы: 1
Читают тему (гостей: 1)
Наверх