Из того, что я вижу в Интернете, это довольно распространенная жалоба, но ответы кажутся более редкими. Проблема заключается в следующем:
У нас есть несколько приложений Excel VBA, которые отлично работают на нескольких машинах пользователей. Однако на одной машине они останавливаются на определенных строках кода. Это всегда одни и те же линии, но эти линии, похоже, не имеют ничего общего друг с другом.
Если вы нажмете F5 (запустите) после остановки, приложение продолжит, так что оно почти похоже на точку останова. Мы попытались выбрать "удалить все перерывы" из меню и даже добавить разрыв и удалить его снова.
У нас была эта проблема с отдельными приложениями раньше, и мы "обманывали" ее, вырезая код из модулей, компилируя, а затем вставляя его обратно и т.д.
Теперь проблема связана скорее с самим Excel, чем с одним .xls, поэтому мы немного не уверены, как это можно сделать.
Любая помощь будет с благодарностью получена:)
Спасибо,
Филип Уиттингтон
Я нашел второе решение.
Надеюсь, это поможет кому-то.
Эта проблема возникает из-за странной причуды в Office/Windows.
После разработки одного и того же кода VBA и запуска его сотни раз (буквально) за последние пару дней я столкнулся с этой проблемой только сейчас. Единственное, что было по-другому, это то, что перед тем, как я столкнулся с этой запутанной проблемой, я случайно закончил выполнение кода VBA с помощью неортодоксального метода.
Я очистил все временные файлы, перезагрузил и т.д. Когда я снова запустил код после этого, у меня все еще возникла проблема - до того, как я вошел в первый цикл. Имеет смысл, что "нажмите кнопку" Отладка "во всплывающем окне, затем дважды нажмите [Ctrl + Break], и после этого можно продолжить без остановок", потому что что-то в комбинации Office/Windows не выпустило выполнение. Он застрял.
Резервное действие Ctrl + Break, вероятно, устраняет затяжное выполнение.
Одно из решений здесь:
Решение этой проблемы состоит в том, чтобы добавить строку кода "Application.EnableCancelKey = xlDisabled" в первой строке вашего макрос.. Это устранит проблему, и вы сможете выполнить макрос успешно не получив сообщение об ошибке "Исполнение кода было прервано".
Но после того, как я вставил эту строку кода, я больше не смог использовать Ctrl + Break. Так оно работает, но не сильно.
xlInterrupt
. (Это также автоматически повторно включает, когда выполнение кода заканчивается.) Ваш другой ответ сработал для меня, но в худшем случае это можно использовать как временное исправление. Больше информации на Application.EnableCancelKey
Я обнаружил, что ударил ctrl + break, пока макрос не запускал исправленную проблему.
У меня также возникла проблема с использованием excel 2007 с рабочей книгой foobar.xlsm(с поддержкой макроса), которая заставила бы "Исполнение кода было прервано", просто попытавшись закрыть книгу на красном X в правом углу без макросы, выполняемые вообще, или любые макросы "инициализации", рабочей книги или рабочей таблицы. Параметры, которые я получил, были "Конец" или "Продолжить", Debug всегда был серым. В качестве предыдущего плаката я предложил Панель управления → Программы и функции → щелкнуть правой кнопкой мыши "Microsoft Office Proffesional 2007" (в моем случае) → изменить- > ремонт.
Это разрешило проблему для меня. Я бы добавил, что это произошло вскоре после обновления MS, и я также нашел добавление в Excel под названием "Team Foundation" от Microsoft, которое я, конечно же, не установил добровольно
Я несколько раз сталкивался с этой проблемой при разработке одного сложного приложения Excel VBA. Иногда Excel начал беспорядочно разрывать объект VBA. И единственным средством было перезагрузить машину. После перезагрузки Excel обычно начал нормально работать.
Вскоре я выяснил, что возможное решение этой проблемы - нажать CTRL + Break один раз, когда макрос не запущен. Возможно, это тоже поможет вам.
Спасибо всем за их вклад. Эта проблема была решена путем выбора REPAIR в панели управления. Я предполагаю, что это явно перерегистрирует некоторые из встроенных COM-компонентов Office и делает то, что REINSTALL не делает. Я ожидаю, что последний просто проверит контрольный список и иногда согласен с тем, что там, если он уже установлен, может быть. Затем у меня была отдельная проблема с регистрацией моей собственной DLL-библиотеки .NET для COM-взаимодействия на компьютере пользователя (несмотря на то, что это также работало на других машинах), хотя я думаю, что это была моя ошибка, а не Microsoft. Еще раз спасибо, я очень ценю это.
Я бы попробовал обычные исправляющие вещи: - Запустите Rob Bovey VBA Code Cleaner в коде VBA - удалить все добавочные файлы на ПК пользователей, в частности, COM и .NET addins - Удалите все файлы .EXD пользователей (несовместимость MSoft Update) - Запустить обнаружение и восстановление Excel в системе пользователей - проверьте размер файла .xlb пользователя (должно быть 20-30K) - Перезагрузите, затем удалите все файлы Temp пользователей
Моя текущая репутация пока не позволяет публиковать это как комментарий. Решение Stans для входа в режим отладки, нажмите дважды Ctrl + Break, включите, сохраните решение моей проблемы, но у меня есть два неожиданных завихрения:
Мой проект struture защищен паролем, поэтому, чтобы войти в режим отладки, мне пришлось сначала войти в режим разработчика, щелкнуть по структуре проекта и ввести пароль.
Мой проект представляет собой файл шаблона (.xmtl). Я открыл файл с помощью двойного щелчка, который открывает его как .xml с "1" в конце предыдущего имени файла. Я исправил ошибку как по инструкции Stans и сохранил ее как... 1.xml файл. Когда я снова открыл шаблон, на этот раз в качестве шаблона и захотел применить ту же ошибку к этому файлу, ошибка исчезла! Я не изменил этот файл и все еще не ошибся при выполнении макроса. Это означает, что ошибка на самом деле не в файле, а в (скрытом) параметре в Excel.
У меня были эти проблемы десятки раз, и, как и вы, я искал в Интернете только для того, чтобы найти недостаток хороших ответов в том, как решить проблему. Я считаю, что точное сообщение, которое я получаю, это "Исполнение кода было прервано".
Я получаю эту ошибку только в том случае, когда я вручную нарушаю выполнение кода в Excel (обычно, нажимая Ctrl + Break). Как только это произойдет, мне обычно приходится перезагружать компьютер, чтобы он снова стал нормальным.
Теперь проблема связана с самим Excel.
Переустановите и исправьте его:) Другое, что трудно сказать.