Преглед садржаја
Једна од најчешћих грешака са којима се суочавамо док радимо са ВБА у Екцел-у је да кориснички дефинисани тип није дефинисан. У овом чланку ћу вам показати зашто је настала ова грешка и како да решите ову грешку.
Преузмите радну свеску са вежбама
Преузмите ову радну свеску да бисте вежбали док читају овај чланак.
Кориснички дефинисан тип није дефинисан.клсм
2 Узроци и решења за Кориснички дефинисан Тип није дефинисан у Екцел ВБА
Постоји 2 главни проблеми иза ове грешке која се често јавља у програму Екцел ВБА . Хајде да их детаљно истражимо и сазнамо начине да их решимо.
1. Правописна грешка приликом декларисања променљивих
Ово је главни разлог ове грешке. Већину времена, грешка „Усер-Дефинед Типе нот Дефинед” је узрокована грешком у писању приликом декларисања променљивих.
Погледајте следеће редове кодова.
1831
Ако покренете овај код, добићете оквир са грешком који вас обавештава о присуству грешке „Кориснички дефинисани тип није дефинисан“. Заједно са њим, наћи ћете други ред кода означен плавом бојом, где сам написао “стрнг” уместо “стринг” .
Надам се да сте схватили поенту. ВБА није могао да препозна тип променљиве “стрнг” , зато га је сматрао новим типом променљиве и мислио да сте га негде дефинисали. Али када јеоткрио да га нигде нисте декларисали, појавила се грешка.
Стога, док покрећете једноставне ВБА кодове, ако ипак наиђете на ову грешку, прво проверите све правописе ваших типова променљивих.
2. Недостатак одговарајуће референце
Ово је још један узрок ове грешке. То је недостатак одговарајућег референцирања. Понекад користимо неке објекте у нашим кодовима којима је потребно одговарајуће референцирање из кутије Висуал Басиц Референце . У супротном, ВБА не препознаје објекат.
Погледајте следећи ВБА код.
9738
Покрените овај код. Добићете исту стару грешку „Усер-Дефинед Типе нот Дефинед”, истакнувши објекат Речник . То је зато што ВБА није могао да препозна речник објекат и сматрао га је кориснички дефинисаном променљивом, која није грешком дефинисана.
Сада је највеће питање, како решити ову грешку? Лако. Постоје 2 начина за решавање ове грешке.
⧪ Решење 1: Провера предуслова референце из оквира за референцу визуелног оквира
Ово је најпаметнији начин да се реши овај проблем. Идите на Алатке &гт; Дугме Референце на траци Висуал Басиц . Кликните на Референце .
Отвориће се оквир за дијалог Референце . Померите се и пронађите Мицрософт Сцриптинг Рунтиме (Ово зависи од објекта који користите. Речник објецт треба да Мицрософт Сцриптинг Рунтиме буде препознат. Дакле, док користите објекат у ВБА коду, морате знати његов предуслов да га ВБА препозна. Посетите ову везу за више информација.). Проверите.
Сада се вратите и покрените код. Нећете добити никакве грешке. Зато што ВБА овог пута може препознати објекат Речник .
⧪ Решење 2: Декларисати га као чисти објекат, а не као специфичан објекат
Постоји још један начин да се реши овај проблем. Можете да декларишете објекат као чисти објекат, а не као објекат речника .
Обратите пажњу на следеће редове кодова.
9668
Овде сам декларисао променљиву МиДицтионари као једноставан објекат, а не Речник. Сада ако покренете овај код, нећете добити никакву грешку.