Приложение Excel VBA останавливается самопроизвольно с сообщением «Выполнение кода остановлено»

101

Из того, что я вижу в Интернете, это довольно распространенная жалоба, но ответы кажутся более редкими. Проблема заключается в следующем:

У нас есть несколько приложений Excel VBA, которые отлично работают на нескольких машинах пользователей. Однако на одной машине они останавливаются на определенных строках кода. Это всегда одни и те же линии, но эти линии, похоже, не имеют ничего общего друг с другом.

Если вы нажмете F5 (запустите) после остановки, приложение продолжит, так что оно почти похоже на точку останова. Мы попытались выбрать "удалить все перерывы" из меню и даже добавить разрыв и удалить его снова.

У нас была эта проблема с отдельными приложениями раньше, и мы "обманывали" ее, вырезая код из модулей, компилируя, а затем вставляя его обратно и т.д.

Теперь проблема связана скорее с самим Excel, чем с одним .xls, поэтому мы немного не уверены, как это можно сделать.

Любая помощь будет с благодарностью получена:)

Спасибо,

Филип Уиттингтон

  • 2
    Пользователь нажимает escape в середине какой-либо обработки? Или любое другое приложение, которое отправляет escape-ключ?
  • 1
    После выбора Удалить все точки останова вы также перекомпилировали и сохранили проект VBA? Я видел связанную проблему в Word VBA, где ранее удаленные точки останова все еще вызывают разрыв.
Показать ещё 3 комментария
Теги:
excel-vba
excel

11 ответов

302
Лучший ответ

Я нашел второе решение.

  • Нажмите кнопку "Отладка" во всплывающем окне.
  • Дважды нажмите Ctrl + Pause|Break.
  • Нажмите кнопку воспроизведения, чтобы продолжить.
  • Сохраните файл после завершения.

Надеюсь, это поможет кому-то.

  • 12
    +1: Вау, этот пост спас меня от мира боли. Очень неожиданное решение для странной проблемы. После двойного нажатия [Ctrl + Break] и продолжения я сохранил файл. После этого проблема больше не появлялась, когда я закрывал и заново открывал файл.
  • 0
    Большое спасибо, я сходил с ума, пытаясь запускать макросы и получать эту ошибку в случайных строках.
Показать ещё 23 комментария
12

Эта проблема возникает из-за странной причуды в Office/Windows.

После разработки одного и того же кода VBA и запуска его сотни раз (буквально) за последние пару дней я столкнулся с этой проблемой только сейчас. Единственное, что было по-другому, это то, что перед тем, как я столкнулся с этой запутанной проблемой, я случайно закончил выполнение кода VBA с помощью неортодоксального метода.

Я очистил все временные файлы, перезагрузил и т.д. Когда я снова запустил код после этого, у меня все еще возникла проблема - до того, как я вошел в первый цикл. Имеет смысл, что "нажмите кнопку" Отладка "во всплывающем окне, затем дважды нажмите [Ctrl + Break], и после этого можно продолжить без остановок", потому что что-то в комбинации Office/Windows не выпустило выполнение. Он застрял.

Резервное действие Ctrl + Break, вероятно, устраняет затяжное выполнение.

  • 0
    Привет - спасибо за это. Полезный фон.
9

Одно из решений здесь:

Решение этой проблемы состоит в том, чтобы добавить строку кода "Application.EnableCancelKey = xlDisabled" в первой строке вашего макрос.. Это устранит проблему, и вы сможете выполнить макрос успешно не получив сообщение об ошибке "Исполнение кода было прервано".

Но после того, как я вставил эту строку кода, я больше не смог использовать Ctrl + Break. Так оно работает, но не сильно.

  • 0
    Спасибо, Стэн - это, безусловно, решение, если ты испытываешь нехватку времени и просто хочешь, чтобы он работал! Очень полезно.
  • 0
    Вы можете повторно включить его в том же исполнении, установив для него значение xlInterrupt . (Это также автоматически повторно включает, когда выполнение кода заканчивается.) Ваш другой ответ сработал для меня, но в худшем случае это можно использовать как временное исправление. Больше информации на Application.EnableCancelKey
Показать ещё 1 комментарий
5

Я обнаружил, что ударил ctrl + break, пока макрос не запускал исправленную проблему.

2

У меня также возникла проблема с использованием excel 2007 с рабочей книгой foobar.xlsm(с поддержкой макроса), которая заставила бы "Исполнение кода было прервано", просто попытавшись закрыть книгу на красном X в правом углу без макросы, выполняемые вообще, или любые макросы "инициализации", рабочей книги или рабочей таблицы. Параметры, которые я получил, были "Конец" или "Продолжить", Debug всегда был серым. В качестве предыдущего плаката я предложил Панель управления → Программы и функции → щелкнуть правой кнопкой мыши "Microsoft Office Proffesional 2007" (в моем случае) → изменить- > ремонт.

Это разрешило проблему для меня. Я бы добавил, что это произошло вскоре после обновления MS, и я также нашел добавление в Excel под названием "Team Foundation" от Microsoft, которое я, конечно же, не установил добровольно

1

Я несколько раз сталкивался с этой проблемой при разработке одного сложного приложения Excel VBA. Иногда Excel начал беспорядочно разрывать объект VBA. И единственным средством было перезагрузить машину. После перезагрузки Excel обычно начал нормально работать.

Вскоре я выяснил, что возможное решение этой проблемы - нажать CTRL + Break один раз, когда макрос не запущен. Возможно, это тоже поможет вам.

1

Спасибо всем за их вклад. Эта проблема была решена путем выбора REPAIR в панели управления. Я предполагаю, что это явно перерегистрирует некоторые из встроенных COM-компонентов Office и делает то, что REINSTALL не делает. Я ожидаю, что последний просто проверит контрольный список и иногда согласен с тем, что там, если он уже установлен, может быть. Затем у меня была отдельная проблема с регистрацией моей собственной DLL-библиотеки .NET для COM-взаимодействия на компьютере пользователя (несмотря на то, что это также работало на других машинах), хотя я думаю, что это была моя ошибка, а не Microsoft. Еще раз спасибо, я очень ценю это.

1

Я бы попробовал обычные исправляющие вещи: - Запустите Rob Bovey VBA Code Cleaner в коде VBA - удалить все добавочные файлы на ПК пользователей, в частности, COM и .NET addins - Удалите все файлы .EXD пользователей (несовместимость MSoft Update) - Запустить обнаружение и восстановление Excel в системе пользователей - проверьте размер файла .xlb пользователя (должно быть 20-30K) - Перезагрузите, затем удалите все файлы Temp пользователей

  • 0
    Запоздалое спасибо!
0

Моя текущая репутация пока не позволяет публиковать это как комментарий. Решение Stans для входа в режим отладки, нажмите дважды Ctrl + Break, включите, сохраните решение моей проблемы, но у меня есть два неожиданных завихрения:

  • Мой проект struture защищен паролем, поэтому, чтобы войти в режим отладки, мне пришлось сначала войти в режим разработчика, щелкнуть по структуре проекта и ввести пароль.

  • Мой проект представляет собой файл шаблона (.xmtl). Я открыл файл с помощью двойного щелчка, который открывает его как .xml с "1" в конце предыдущего имени файла. Я исправил ошибку как по инструкции Stans и сохранил ее как... 1.xml файл. Когда я снова открыл шаблон, на этот раз в качестве шаблона и захотел применить ту же ошибку к этому файлу, ошибка исчезла! Я не изменил этот файл и все еще не ошибся при выполнении макроса. Это означает, что ошибка на самом деле не в файле, а в (скрытом) параметре в Excel.

0

У меня были эти проблемы десятки раз, и, как и вы, я искал в Интернете только для того, чтобы найти недостаток хороших ответов в том, как решить проблему. Я считаю, что точное сообщение, которое я получаю, это "Исполнение кода было прервано".

Я получаю эту ошибку только в том случае, когда я вручную нарушаю выполнение кода в Excel (обычно, нажимая Ctrl + Break). Как только это произойдет, мне обычно приходится перезагружать компьютер, чтобы он снова стал нормальным.

-1

Теперь проблема связана с самим Excel.

Переустановите и исправьте его:) Другое, что трудно сказать.

  • 0
    Мы попытались переустановить, хотя пользователь «забыл» перезагрузиться после того, как парень поддержки сделал свое дело. Пытаюсь избежать очередной переустановки Office, но это может быть неизбежно ... Спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню