Хитрости »
Основные понятия (23)
Сводные таблицы и анализ данных (9)
Графики и диаграммы (5)
Работа с VB проектом (12)
Power BI и Power Query (14)
Условное форматирование (5)
Списки и диапазоны (5)
Макросы(VBA процедуры) (63)
Разное (38)
Баги и глюки Excel (2)

Code execution has been interrupted - что за баг?

Иногда при выполнении вполне рабочего кода может возникнуть ошибка "Code execution has been interrupted":
Code execution has been interrupted
чаще всего она появляется в циклах (это Do ... Loop, For each, For ... Next). Но может проявится и на отдельных участках кода совершенно независимо от того, что делает тот или иной кусок кода. Сама по себе ошибка не является таковой - при нажатии Continue код продолжает работать и может даже дойти до конца уже без ошибок. Но что примечательно - появившись в каком-то коде однажды, эта ошибка начинает преследовать вас и при этом воспроизводится только на том ПК, на котором появилась. На других же ПК код может работать отлично и без всяких казусов.

Почему вообще появляется эта ошибка? Точный ответ на этот вопрос я, к сожалению, не дам. Только предположения: VBA тоже хранит всевозможные логи при работе и обращается к разным библиотекам. И скорее всего в какой-то момент этого хлама набирается так много, что VBE начинает "подглючивать" таким вот нестандартным образом, предполагая, что мы пытаемся выполнить параллельно два кода.

И главное: как ошибку Code execution has been interrupted устранить?
Я знаю два способа.
Способ 1 - разовый
Перед выполнением кода поставить строку:

Application.EnableCancelKey = xlDisabled

а после выполнения(перед End Sub или в любом месте, где может произойти выход из процедуры) её вернуть:

Application.EnableCancelKey = xlEnabled

чем не нравится данный метод мне лично: свойство EnableCancelKey отвечает за возможность обработки нажатия клавиш при выполнении кода. Значение xlDisabled переводит VBA в режим "глухой обороны" - т.е. он не будет реагировать ни на какие нажатия пока не завершится выполнение кода. Догадались, чем это чревато? Правильно: если вдруг попали в бесконечный цикл или захотели прервать выполнение - ничего не получится, т.к. сочетание Ctrl+Break будет просто проигнорировано.


Способ 2 - пожизненный(почти)
После появления ошибки нажмите Debug, затем Ctrl+Break, затем кнопку Play на панели редактора VBE (зеленый треугольничек воспроизведения кода) - продолжится выполнение кода. После этого ошибка должна исчезнуть.
Главное жать не F5 для продолжения выполнения, а именно треугольник на панели. Иначе может не сработать.


Если знаете еще способы устранения ошибки - делитесь в комментариях - это обязательно поможет кому-то спасти нервы и силы и в карму вам плюсанется :)


Статья помогла? Поделись ссылкой с друзьями!
  Плейлист   Видеоуроки

Поиск по меткам

Access apple watch Multex Outlook Power Query и Power BI VBA работа в редакторе VBA управление кодами Бесплатные надстройки Дата и время Диаграммы и графики Записки Защита данных Интернет Картинки и объекты Листы и книги Макросы и VBA Надстройки Настройка Печать Поиск данных Политика Конфиденциальности Почта Программы Работа с приложениями Работа с файлами Разработка приложений Сводные таблицы Списки Тренинги и вебинары Финансовые Форматирование Формулы и функции Функции Excel Функции VBA Ячейки и диапазоны акции MulTEx анализ данных баги и глюки в Excel ссылки
Обсуждение: 6 комментариев
  1. Оля:

    Спасибо огромное!

  2. Константин:

    Спасибо. Второй способ помог. Не представляю как можно было досооброжать до такого неочевидного решения)

  3. Evgeniy:

    Это режим отладки включенный.
    Попробуйте прожать еще раз Ctrl+Break

    • Евгений, Вы бы статью прочитали для начала, прежде чем комментарий оставлять :) Этот баг проявляется редко и ни о каком режиме отладки речи не идет. Рассматривается ситуация, когда код просто запущен стандартным методом или через кнопку и появляется данная ошибка.

      • Семен:

        Ситуация действительно похожа на какой-то глюк отладчика VBA. Запускаем макрос по F5, нажимаем Ctrl+Pause, Debug, перезапускаем по F5 или кнопке Play - получаем ошибку с остановкой в произвольных местах. Никакое количество последовательностей "Debug, Ctrl+Pause, F5" не помогает, но при замене F5 на Play срабатывает. Перезапуск Excel не помогает, перезагрузка Win помогает (если правильно помню).

  4. Павел:

    Выручили!

Поделитесь своим мнением

Комментарии, не имеющие отношения к комментируемой статье, могут быть удалены без уведомления и объяснения причин. Если есть вопрос по личной проблеме - добро пожаловать на Форум


Для оформления сообщений Вы можете использовать следующие тэги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Тренинги

Заказать
Юридическая информация

Использование материалов сайта

Политика Конфиденциальности

ИП Щербаков Дмитрий Валентинович
ОГРНИП: 318502700083307
ИНН: 504013350772

Наши партнеры

Перейти
Перейти

Счетчики

Рейтинг@Mail.ru Яндекс.Метрика
© 2018 Excel для всех   Войти