Метод Form Show в событии workbook_open в ThisWorkbook разбивает фокус - PullRequest
2 голосов
/ 27 июля 2011

Когда я пытаюсь показать userform1 с userform1.show в ThisWorkbook в закрытой подпрограмме workbook_open (), это делает самое странное.(Я использую Excel 2007) - он входит в режим прерывания и останавливает выполнение кода !!!

Я открываю книгу с поддержкой макросов, и пользовательская форма отображается, как и планировалось, но когда я перемещаю мышь внутриобласть пользовательской формы переходит в режим прерывания и выделяет строку UserForm1.Show, как будто это проблема.

Кроме того, когда я нажимаю F8, он выделяет приватную подпрограмму workbook_open (), а другой нажимает подсветку userform1.show сноваи еще одно нажатие показывает мне ошибку времени выполнения '400'.:

ошибка приложения или объекта.

Этого никогда не случалось со мной раньше, янашел сообщение, в котором говорится, что он не имеет ответа здесь .

Есть идеи?

Ответы [ 4 ]

3 голосов
/ 01 августа 2011

Я тоже сталкивался с тем же сценарием.

Я изменил свойство ShowModal в свойствах Form на False, и разрыв прекратился.

1 голос
/ 24 февраля 2014

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

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

Что решает проблему для меня - это нажать ctrl + break, когда код НЕ работает, он покажет, что он находится в режиме прерывания, а затем нажать F5.Он не запустится, но снова выйдет из режима останова.Когда вы это сделаете, проблема должна быть решена, и вы можете запустить код как обычно.Я думаю, что этот метод работает так же, как перезагрузка вашего компьютера, но он намного быстрее.

0 голосов
/ 27 июля 2011

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

  • Скомпилируйте код
  • Очистите все точки останова
  • Проверка ссылок проекта (пропущенные ссылки могут вызывать проблемы)
  • Добавьте некоторые ненужные операторы (например, if 1 = 2 then DoEvents) перед «скрытой точкой останова», скомпилируйте код и затем удалите код снова
  • Установите и запустите Средство очистки кода VBA

В любом случае, для меня это загадка, причина этой странной проблемы.Кажется, что некоторые точки останова остаются в памяти даже после их удаления ...

Надеюсь, это поможет!

0 голосов
/ 27 июля 2011

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

Также убедитесь, что вы очистили все ранее существующие точки останова.Возможно, вам сначала нужно создать новую точку останова ( F9 ), а затем очистить все точки останова ( Ctrl + Shift + F9 ) для включаемой команды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...