2015-06-02 1 views
1

У меня есть несколько «фантомных» объектов в моем UserForm, которые я разрабатываю в VBA (для Excel). Они были удалены в части компоновщика интерфейса формы, и в фактическом модуле нет остающихся ссылок на них (по крайней мере, в той части модуля, которую IDE мне отобразит). Однако эти объекты все еще существуют. Я не могу повторно использовать их имена, и они видны как члены формы в обозревателе объектов (см EmployeeFormatFrame и Label1):Объект UserForm сохраняется даже после удаления

Object Browser

не может повторно использовать имя:

Ambiguous Name

Я мог бы использовать некоторую помощь, чтобы понять это. Единственное, что я мог найти при исследовании этой проблемы: this, но это относится к базе данных Access и поэтому не очень помогает. Это очень схожая проблема с тем, что я часто испытывал при работе в C++ Builder Borland, который всегда устранялся путем удаления оставшихся ссылок на объект в коде. Однако я не могу найти здесь (или IDE не покажет их мне).

+0

Попробуйте экспортировать копию формы (Файл> Экспорт файла), а затем импортируйте ее в новую пустую книгу, чтобы узнать, исчезли ли старые имена. – barrowc

ответ

1

VBA - интерпретируемый язык. В VBE, когда вы нажмете, введите код, который преобразуется в P-код и сохраняется в приложении (например, Excel).

Так что если вы застряли с фантомными объектами, лучшим и наиболее эффективным способом является создание новой книги и перенос всего кода и объектов на нее. Именно то, что barrowc было предложено в комментарии выше.

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

+0

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