: Користувацький тип не визначений в Excel VBA (2 швидких рішення)

  • Поділитися Цим
Hugh West

Однією з найпоширеніших помилок, з якими ми стикаємося при роботі з VBA в Excel полягає в тому, що не визначений користувальницький тип. У цій статті я розповім, чому виникає ця помилка і як її вирішити.

Завантажити Практичний посібник

Завантажте цей практичний посібник, щоб потренуватися, поки ви читаєте цю статтю.

User-Defined Type Not Defined.xlsm

2 Причини та шляхи вирішення Тип, визначений користувачем, не визначений в Excel VBA

Існують 2 основні проблеми, що стоять за цією помилкою, яка часто зустрічається в Excel VBA Розглянемо їх детальніше та з'ясуємо шляхи їх вирішення.

1. орфографічна помилка при оголошенні змінних

Це є основною причиною такої помилки. У більшості випадків помилка "User-Defined Type not Defined" (Тип, що визначається користувачем, не визначено) викликана орфографічною помилкою при оголошенні змінних.

Подивіться на наступні рядки кодів.

 Sub User_Defined_Type_not_Defined() Dim Name As Strng Name = "ExcelWIKI" MsgBox Name End Sub 

Якщо ви запустите цей код, то отримаєте вікно з повідомленням про наявність помилки "User-Defined Type Not Defined". Поряд з ним ви знайдете другий рядок коду, виділений синім кольором, де я написав "strng" замість "string" .

Сподіваюся, ви зрозуміли, про що я. VBA не вдалося розпізнати тип змінної "strng" тому він вважав його новим типом змінної і думав, що ви його десь визначили. Але коли він виявив, що ви його ніде не оголошували, то видав помилку.

Тому, виконуючи прості VBA кодів, якщо ви все ж таки зіткнулися з цією помилкою, спочатку перевірте всі написання типів ваших змінних.

2. відсутність належних посилань

Ще одна причина цієї помилки - відсутність правильного посилання. Іноді ми використовуємо в коді деякі об'єкти, які потребують правильного посилання на них з Довідкове вікно Visual Basic Інакше, VBA не впізнає об'єкт.

Зверніть увагу на наступне VBA код.

 Sub User_Defined_Type_not_Defined() Dim MyDictionary As Dictionary Set MyDictionary = CreateObject("Scripting.Dictionary") End Sub 

Запустіть цей код. Ви отримаєте ту ж помилку "User-Defined Type not Defined", підкреслюючи важливість Словниковий об'єкт Це пов'язано з тим, що VBA не могли впізнати Словниковий об'єкт і розглядав її як змінну, визначену користувачем, яка не була визначена помилково.

Тепер найбільше питання, як вирішити цю помилку? Легко. Є 2 шляхи вирішення цієї помилки.

⧪ Рішення 1: Перевірка посилання на передумову у вікні візуального посилання

Це найрозумніший спосіб вирішити цю проблему. Перейдіть на сайт Інструменти; Посилання кнопку в розділі Visual Basic Натисніть на стрічку. Клацніть на Посилання .

На екрані з'явиться діалогове вікно під назвою Посилання відкриється. Прокрутіть і знайдіть Виконання сценаріїв Microsoft (Це залежить від об'єкта, який ви використовуєте. Словниковий об'єкт потреби Виконання сценаріїв Microsoft Таким чином, при використанні об'єкта в VBA кодекс, ви повинні знати його обов'язкову умову для того, щоб бути визнаним VBA. Детальніше за посиланням). Перевірте це.

Тепер поверніться і запустіть код. Ви не отримаєте ніяких помилок. Тому що VBA може розпізнати Словниковий об'єкт цього разу.

⧪ Рішення 2: Декларувати його як чистий об'єкт, а не як конкретний об'єкт

Існує інший спосіб вирішення цієї проблеми. Можна декларувати об'єкт як чистий об'єкт, а не як об'єкт Словниковий об'єкт .

Зверніть увагу на наступні рядки кодів.

 Sub User_Defined_Type_not_Defined() Dim MyDictionary As Object Set MyDictionary = CreateObject("Scripting.Dictionary") End Sub 

Тут я оголосив змінну Мій словник як простий об'єкт, а не як Словник. Тепер, якщо ви запустите цей код, ви не отримаєте жодної помилки.

Г’ю Вест — досвідчений тренер і аналітик Excel із понад 10-річним досвідом роботи в галузі. Він має ступінь бакалавра з бухгалтерського обліку та фінансів і ступінь магістра з ділового адміністрування. Г’ю має пристрасть до викладання та розробив унікальний підхід до викладання, який легко зрозуміти та дотримуватися. Його експертне знання Excel допомогло тисячам студентів і професіоналів у всьому світі вдосконалити свої навички та досягти успіху в кар’єрі. У своєму блозі Г’ю ділиться своїми знаннями зі світом, пропонуючи безкоштовні навчальні посібники з Excel та онлайн-навчання, щоб допомогти окремим особам і компаніям повністю розкрити свій потенціал.