Ложная ошибка «Пользовательский тип не определен» в Microsoft Word VBA - PullRequest
2 голосов
/ 19 августа 2009

У меня есть шаблон Microsoft Word с некоторым кодом и некоторыми ссылками, который отлично работал в течение нескольких месяцев, но только что начал выдавать ложную ошибку «Пользовательский тип не определен» всякий раз, когда я открываю его или пытаюсь скомпилировать.

Я знаю, что это ложная ошибка, потому что я не внес никаких существенных изменений в код. На самом деле, я откатил код до последней развернутой версии (которая, как я знаю, работает отлично), и я все еще получаю сообщение об ошибке. Я также закомментировал весь код в шаблоне, и все еще получаю ошибку. Я также удалил и заново добавил все ссылки (та же самая ошибка), удалил все ссылки и добавил их обратно, одну за другой, до тех пор, пока возникающие ошибки компиляции не будут устранены, и в этот момент у меня останется ложный пользователь -определенный тип не определен "ошибка. (Теперь я буду называть это ошибкой UDTND, чтобы не сводить вас с ума.) Я думаю, что эта ошибка начала появляться после того, как я перезагрузил свой компьютер. Это происходит только с этим шаблоном, но я не понимаю, как это может быть связано с этим шаблоном.

Интересно, что ошибка незначительно отличается от подлинной ошибки UDTND следующими способами:

  • Код не выделяется при отображении ошибки.

  • Диалоговое окно с названием «Microsoft Visual Basic» содержит сообщение об ошибке, но, в отличие от реальной ошибки UDTND, не содержит текст «Ошибка компиляции:»;

  • Это происходит при открытии шаблона, а не только при его компиляции (по крайней мере, я думаю, это отличается от обычной ошибки).

Я пробовал поискать его в Google, но я просто получаю ошеломительные результаты от начинающих разработчиков, спрашивающих, почему они получают эту ошибку, с ответами, в которых говорится, что им либо нужно объявить отсутствующий тип, исправить написание типа переменной, вызывающей ошибку, либо добавить ссылку на отсутствующую библиотеку. Я весь день бился головой о экран, и это помогло примерно так же, как и все остальные вещи, которые я пробовал (то есть совсем не пытался). У меня есть ощущение, что это как-то связано с испорченной ссылкой, но на самом деле все в порядке, и я удалил и добавил их заново, что, как я ожидаю, решит такую ​​проблему.

Есть идеи ...?

Ответы [ 6 ]

1 голос
/ 23 января 2012

У меня была очень похожая проблема.

Моя проблема появилась (я думаю) сразу после того, как я отменил поиск и замену (Ctrl + Z). Не было подсвечивания проблемы, только сообщение об ошибке «Определяемый пользователем тип не определен» при компиляции.

Я пытался:

1) перезагрузка компьютера
2) изменение ссылочного порядка
3) удаление функций / процедур, модулей по одному.

Не сработало. Мой проект был написан в Excel VBA, и вот решение, которое я нашел.

РЕШЕНИЕ:

Я открыл новый файл Excel и открыл редактор Visual Basic. Затем я скопировал все формы, модули и классовые модули по одному в новый файл. Затем я скопировал объекты управления (3 командные кнопки) со старого листа на новый. Теперь новый файл был идентичен старому проекту - ушел только «Определяемый пользователем тип не определен» и проблема была решена.

1 голос
/ 16 сентября 2011

У меня несколько раз возникала проблема «Пользовательский тип не определен» при компиляции кода Microsoft Visual Basic 6 (MSVB6), который компилировался без проблем ранее. Кажется, это происходит после того, как у меня был долгий сеанс кодирования без перезагрузки компьютера. Как вы можете догадаться, я использовал операционные системы Microsoft. В настоящее время я использую Windows XP. Перезагрузка компьютера обычно решает проблему, как это часто бывает в операционных системах Microsoft.

Я прочитал, что полностью определяющие объявления также могут помочь, например, "Dim oBar as Foo.Bar" вместо "Dim oBar as Bar". Однако я не пробовал этот подход.

1 голос
/ 19 августа 2009

Ваш поиск неисправностей в References - это звук. Когда-то давно (и я не помню точную ошибку) я был в той же точке, и ключом была ссылка ordering . Когда вы назначаете ссылки, вы заметите функцию настройки «Приоритет». Поэкспериментируйте с этим, и вы можете решить это.

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

У меня была такая же проблема с Excel 2013.

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

Я вернулся к более ранней версии, и объявление подтвердило, что проблемы не было, а затем выполнил тот же поиск, замену и переименование и снова получил точно такое же поведение.

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

0 голосов
/ 21 января 2010

Да, ссылки были бы первым шагом в устранении этой проблемы, как уже было сказано, но при отсутствии этого идентификатора начинайте комментировать код в любых процедурах обработки событий, запускаемых при запуске (хотя мой опыт только с Access VBA)

0 голосов
/ 19 августа 2009

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

TLDR:

Ссылка на пакет / надстройку / что бы там ни было, вероятно, нуждается в повторной ссылке. Отметьте Инструменты -> Ссылки в меню.

Также кажется, что если вы устанавливаете Microsoft Security Advisory 960715, то определенные элементы управления будут уничтожены. Есть исправления, которые могут или не могут работать для вас. Хорошая статья в этом блоге:

Блог VSOD

...