Зміст
Однією з найпоширеніших помилок, з якими ми стикаємося при роботі з VBA в Excel полягає в тому, що не визначений користувальницький тип. У цій статті я розповім, чому виникає ця помилка і як її вирішити.
Завантажити Практичний посібник
Завантажте цей практичний посібник, щоб потренуватися, поки ви читаєте цю статтю.
User-Defined Type Not Defined.xlsm2 Причини та шляхи вирішення Тип, визначений користувачем, не визначений в 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
Тут я оголосив змінну Мій словник як простий об'єкт, а не як Словник. Тепер, якщо ви запустите цей код, ви не отримаєте жодної помилки.