Из того, что я вижу в Интернете, это довольно распространенная жалоба, но ответы кажутся более редкими. Проблема заключается в следующем:
У нас есть несколько приложений Excel VBA, которые отлично работают на нескольких компьютерах пользователей. Однако на одной машине они останавливаются на определенных строках кода. Это всегда одни и те же линии, но эти линии, похоже, не имеют ничего общего друг с другом.
Если вы нажмете F5 (запустить) после остановки, приложение продолжит работу, так что это почти как точка останова. Мы попытались выбрать «удалить все разрывы» из меню и даже добавить разрыв и удалить его снова.
Раньше у нас была эта проблема с отдельными приложениями, и мы «решили» ее, вырезав код из модулей, скомпилировав и вставив его обратно и т. Д.
Теперь кажется, что проблема связана с самим Excel, а не с одним .xls, поэтому мы немного не уверены, как справиться с этим.
Любая помощь будет принята с благодарностью :)
Спасибо,
Филип Уиттингтон
Ответы:
Я нашел 2-е решение.
Надеюсь, это кому-нибудь поможет.
источник
Эта проблема возникает из-за странной причуды в Office / Windows.
После разработки одного и того же фрагмента кода VBA и выполнения его буквально сотни раз за последние пару дней я столкнулся с этой проблемой только сейчас. Единственное, что изменилось, это то, что незадолго до того, как я столкнулся с этой проблемой, я случайно закончил выполнение кода VBA неортодоксальным методом.
Я удалил все временные файлы, перезагрузил и т. Д. Когда я снова запустил код после всего этого, у меня все еще возникла проблема - до того, как я вошел в первый цикл. Имеет смысл «нажать кнопку« Отладка »во всплывающем окне, затем дважды нажать [Ctrl + Break] и после этого продолжить без остановок» поскольку что-то в комбинации Office / Windows не освободило выполнение. Это застряло.
Избыточное действие Ctrl + Break, вероятно, разрешает длительное выполнение.
источник
Одно из решений здесь :
Но после того, как я вставил эту строку кода, я больше не мог использовать Ctrl + Break. Так что работает, но не сильно.
источник
xlInterrupt
. (Это также автоматически повторно включает, когда выполнение кода заканчивается.) Ваш другой ответ сработал для меня, но в худшем случае это можно использовать как временное исправление. Более подробная информация о Application.EnableCancelKeyЯ обнаружил, что нажатие Ctrl + Break в то время, когда макрос не работал, решило проблему.
источник
Я бы попробовал обычные корректирующие действия: - Запустите программу VBA Code Cleaner Роба Бови на своем коде VBA - Удалите все надстройки на ПК пользователя, особенно надстройки COM и .NET - Удалите все пользовательские файлы .EXD (несовместимости MSoft Update) - Запустите Excel Обнаружение и восстановление в системе пользователя - проверьте размер файла .xlb пользователя (должен быть 20-30 КБ) - Перезагрузите и удалите все временные файлы пользователя
источник
Спасибо всем за их вклад. Эта проблема была решена выбором РЕМОНТА в Панели управления. Я предполагаю, что это явно перерегистрирует некоторые нативные COM-компоненты Office и выполняет то, что REINSTALL не делает. Я ожидаю, что последний только проходит контрольный список и иногда принимает то, что там, если это уже установлено, возможно. Затем у меня возникла отдельная проблема с регистрацией моей собственной .NET DLL для взаимодействия COM на компьютере пользователя (несмотря на то, что это также работает на других машинах), хотя я думаю, что это была моя ошибка, а не Microsoft. Еще раз спасибо, я действительно ценю это.
источник
Я сталкивался с этой проблемой несколько раз при разработке одного сложного приложения Excel VBA. Иногда Excel начинал разбивать объект VBA совершенно случайно. И единственным выходом было перезагрузить машину. После перезагрузки Excel обычно начинает нормально работать.
Вскоре я обнаружил, что возможное решение этой проблемы - нажать CTRL + Break один раз, когда макрос НЕ работает. Может быть, это может помочь вам тоже.
источник
У меня была эта проблема также при использовании Excel 2007 с книгой foobar.xlsm (с включенным макросом), которая получала бы «Выполнение кода было прервано», просто пытаясь закрыть книгу на красном крестике в правом углу без выполнения макросов все или любые макросы «инициализировать» формы, книги или рабочего листа. Опции, которые я получил, были «Конец» или «Продолжить», отладка всегда была серой. Я сделал, как предыдущий плакат предложил Панель управления-> Программы и компоненты-> щелкните правой кнопкой мыши «Microsoft Office Proffesional 2007» (в моем случае) -> изменить-> восстановить.
Это решило проблему для меня. Я мог бы добавить, что это произошло вскоре после обновления MS, и я также нашел в Excel надстройку под названием «Team Foundation» от Microsoft, которую я, конечно, не установил добровольно.
источник
Я хотел бы добавить больше деталей к ответу Стэна # 2 по следующим причинам:
Я сам сталкивался с этой проблемой более десятка раз и, в зависимости от условий проекта, выбирал между волшебным ответом Стэна вуду №1 или №2. Когда я продолжаю сталкиваться с этим снова, я становлюсь более любопытным, чем это происходит в первую очередь.
Я хотел бы добавить ответ для пользователей Mac тоже.
Есть ограничения с обоими этими возможными ответами:
Это может произойти по любой из следующих причин:
Операционная система не выделяет системные ресурсы процессу Excel. ( Решение: нужно просто запустить операционную систему - вероятность успеха очень низкая, но уже много раз работала)
P-код - это промежуточный код, который использовался в Visual Basic (до .NET) и, следовательно, он все еще используется в VBA. Это позволило более компактный исполняемый файл за счет более медленного выполнения. Почему я говорю о p-коде? Потому что иногда он поврежден между несколькими запусками и большими файлами или просто из-за установки программного обеспечения (Excel) где-то испортилось. Когда p-код искажает. выполнение кода продолжает прерываться. РешениеВ этих случаях предполагается, что ваш код начал повреждаться, и в будущем есть вероятность, что ваша книга Excel также будет повреждена, и вы получите сообщения типа «файл Excel поврежден и не может быть открыт». Следовательно, как быстрое решение, вы можете положиться на ответ № 1 или ответ № 2 в соответствии с вашими требованиями. Однако никогда не игнорируйте признаки коррупции. Лучше скопировать свои модули кода в блокноте, удалить модули, сохранить и закрыть книгу, закрыть Excel. Теперь снова откройте рабочую книгу и начните создавать новые модули с кодом, скопированным ранее в блокнот.
Пользователи Mac, попробуйте любой из приведенных ниже вариантов, и они определенно будут работать в зависимости от архитектуры вашей системы, то есть ОС и версии Office.
Вы будете переведены в режим прерывания с использованием вышеуказанных комбинаций клавиш, поскольку макрос приостанавливает выполнение, немедленно завершая текущую задачу. Это замена шага 2.
xlErrorHandler
вместе сResume
оператором в обработчике ошибок, если код ошибки равен 18. Затем прерывание отправляется в запущенную процедуру как ошибка, которую можно перехватить по ошибке обработчик настроен с помощью оператора On Error GoTo. Trappable код ошибки - 18. Текущая процедура прервана, и пользователь может отладить или завершить процедуру. Microsoft предупреждает, что не используйте это, если ваш обработчик ошибок имеет оператор возобновления, иначе ваш обработчик ошибок всегда возвращается к одному и тому же утверждению. Это именно то, что мы хотим от нежелательных бессмысленных прерываний выполнения кода.источник
Моя текущая репутация пока не позволяет публиковать это как комментарий. Решение Stans, чтобы войти в режим отладки, дважды нажмите Ctrl + Break, играть дальше, сохранить действительно решил мою проблему, но у меня есть два неожиданных поворота:
Мой проект защищен паролем, поэтому, чтобы войти в режим отладки, мне сначала нужно было войти в режим разработчика, нажать на структуру проекта и ввести пароль.
Мой проект - это файл шаблона (.xmtl). Я открыл файл с помощью двойного щелчка, который открывает его как .xml с «1» в конце предыдущего имени файла. Я исправил ошибку как по инструкции Stans и сохранил ее как ... 1.xml файл. Когда я снова открыл шаблон, на этот раз как шаблон, и захотел применить то же исправление ошибки к этому файлу, ошибка исчезла! Я не изменил этот файл и до сих пор нет ошибок при выполнении макроса. Для меня это означает, что ошибка на самом деле не в файле, а в (скрытой) настройке в Excel.
источник
Переустановите и исправьте это :) Другое тогда, что это трудно сказать.
источник