Obsah
Jednou z najčastejších chýb, s ktorými sa stretávame pri práci s VBA v programe Excel je, že nie je definovaný typ definovaný používateľom. V tomto článku vám ukážem, prečo táto chyba vzniká a ako ju vyriešiť.
Stiahnite si cvičebnicu
Stiahnite si tento cvičebný zošit, aby ste si počas čítania tohto článku precvičili svoje zručnosti.
Typ definovaný používateľom Nie je definovaný.xlsm2 Príčiny a riešenia Typ definovaný používateľom nie je definovaný v programe Excel VBA
Existujú 2 hlavné problémy tejto často sa vyskytujúcej chyby v programe Excel VBA . Poďme ich podrobne preskúmať a zistiť spôsoby ich riešenia.
1. Pravopisná chyba pri deklarovaní premenných
Toto je hlavný dôvod tejto chyby. Väčšinou sa chyba "Typ definovaný používateľom nie je definovaný" je spôsobená pravopisnou chybou pri deklarovaní premenných.
Pozrite sa na nasledujúce riadky kódov.
Sub User_Defined_Type_not_Defined() Dim Name As Strng Name = "ExcelWIKI" MsgBox Name End Sub
Ak spustíte tento kód, zobrazí sa chybové okno s upozornením na prítomnosť chyby "Typ definovaný používateľom nie je definovaný". Spolu s ním nájdete druhý riadok kódu zvýraznený modrou farbou, kde som napísal "strng" namiesto "reťazec" .
Dúfam, že ste pochopili, o čo ide. VBA nedokázal rozpoznať typ premennej "strng" , preto ju považoval za nový typ premennej a myslel si, že ste ju niekde definovali. Keď však zistil, že ste ju nikde nedeklarovali, vyhlásil chybu.
Preto pri spúšťaní jednoduchých VBA kódy, ak sa aj tak stretnete s touto chybou, najprv skontrolujte všetky pravopisné znaky typov premenných.
2. Nedostatok správneho odkazovania
Toto je ďalšia príčina tejto chyby. Je ňou nedostatočné odkazovanie. Niekedy v našich kódoch používame niektoré objekty, ktoré potrebujú správne odkazovanie z Referenčné okno jazyka Visual Basic ... Inak, VBA nerozpozná objekt.
Pozrite sa na tieto informácie VBA kód.
Sub User_Defined_Type_not_Defined() Dim MyDictionary As Dictionary Set MyDictionary = CreateObject("Scripting.Dictionary") End Sub
Spustite tento kód. Zobrazí sa rovnaká stará chyba "Typ definovaný používateľom nie je definovaný", zvýraznenie Slovníkový objekt Je to preto. VBA nemohol rozpoznať Slovníkový objekt a považoval ju za premennú definovanú používateľom, ktorá nebola definovaná chybne.
Najväčšou otázkou je, ako túto chybu vyriešiť? Jednoducho. 2 spôsoby riešenia tejto chyby.
⧪ Riešenie 1: Kontrola odkazu na predpoklad z referenčného poľa vizuálneho okna
Toto je najrozumnejší spôsob riešenia tohto problému. Nástroje> Referencie tlačidlo v Visual Basic stuha. Kliknite na Odkazy .
Dialógové okno s názvom Odkazy otvorí sa. Prejdite a nájdite Spustenie skriptov Microsoft (Závisí to od objektu, ktorý používate. Slovníkový objekt potrebuje Spustenie skriptov Microsoft Takže pri používaní objektu v VBA kód, musíte poznať jeho predpoklad, aby ho rozpoznal VBA. Viac informácií nájdete na tomto odkaze.).
Teraz sa vráťte a spustite kód. Nebudete dostávať žiadne chyby. pretože VBA dokáže rozpoznať Slovníkový objekt tentoraz.
⧪ Riešenie 2: Deklarovanie ako čistého objektu namiesto špecifického objektu
Tento problém sa dá vyriešiť aj inak: objekt môžete deklarovať ako čistý objekt, a nie ako Slovníkový objekt .
Všimnite si nasledujúce riadky kódov.
Sub User_Defined_Type_not_Defined() Dim MyDictionary As Object Set MyDictionary = CreateObject("Scripting.Dictionary") End Sub
Tu som deklaroval premennú MyDictionary ako jednoduchý objekt, nie ako Slovník. Ak teraz spustíte tento kód, nezobrazí sa žiadna chyba.