Obsah
Jednou z nejčastějších chyb, se kterou se setkáváme při práci s VBA v Excelu je, že není definován uživatelsky definovaný typ. V tomto článku vám ukážu, proč k této chybě dochází a jak ji vyřešit.
Stáhnout cvičebnici
Stáhněte si tento cvičební sešit a procvičujte si při čtení tohoto článku.
Typ definovaný uživatelem není definován.xlsm2 Příčiny a řešení Typ definovaný uživatelem není definován v aplikaci Excel VBA
Existují 2 hlavní problémy, které stojí za touto často se vyskytující chybou v aplikaci Excel. VBA . Pojďme je podrobně prozkoumat a zjistit způsoby jejich řešení.
1. Pravopisná chyba při deklaraci proměnných
To je hlavní příčina této chyby. Většinou se jedná o chybu. "Typ definovaný uživatelem není definován" je způsobena pravopisnou chybou při deklaraci proměnných.
Podívejte se na následující řádky kódů.
Sub User_Defined_Type_not_Defined() Dim Name As Strng Name = "ExcelWIKI" MsgBox Name End Sub
Pokud spustíte tento kód, zobrazí se chybové okno s upozorněním na výskyt chyby. "Typ definovaný uživatelem není definován". Spolu s ním najdete modře zvýrazněný druhý řádek kódu, kde jsem napsal. "strng" místo "string" .
Doufám, že jste to pochopili. VBA nemohl rozpoznat typ proměnné "strng" , proto ji považoval za nový typ proměnné a myslel si, že jste ji někde definovali. Když však zjistil, že jste ji nikde nedeklarovali, vyhodil chybu.
Proto při spuštění jednoduchých VBA kódů, pokud se s touto chybou přesto setkáte, zkontrolujte nejprve všechny pravopisné podoby typů proměnných.
2. Nedostatečné odkazování
To je další příčina této chyby. Tou je chybějící správné odkazování. Někdy v našich kódech používáme některé objekty, které potřebují správné odkazování z kódu Referenční rámeček jazyka Visual Basic ... Jinak, VBA nerozpozná objekt.
Podívejte se na následující VBA kód.
Sub User_Defined_Type_not_Defined() Dim MyDictionary As Dictionary Set MyDictionary = CreateObject("Scripting.Dictionary") End Sub
Spusťte tento kód. Zobrazí se stejná stará chyba. "Typ definovaný uživatelem není definován", zvýraznění Slovníkový objekt Je to proto, že VBA nemohl rozpoznat Slovníkový objekt , a považoval ji za uživatelsky definovanou proměnnou, která nebyla definována chybně.
Největší otázkou je, jak tuto chybu vyřešit? Snadno. 2 způsoby řešení této chyby.
⧪ Řešení 1: Kontrola odkazu na předpoklad z referenčního rámečku vizuálního rámečku
Toto je nejchytřejší způsob, jak tento problém vyřešit. Přejděte na stránku Nástroje> Reference tlačítko v Visual Basic stuha. Klikněte na Odkazy .
Dialogové okno s názvem Odkazy se otevře. Přejděte a najděte Spuštění skriptovacího prostředí Microsoft (To závisí na objektu, který používáte. Slovníkový objekt potřebuje Spuštění skriptovacího prostředí Microsoft aby byl rozpoznán. Takže při použití objektu v VBA kód, musíte znát jeho předpoklad, aby byl rozpoznán. VBA. Více informací najdete na tomto odkazu.). Podívejte se na něj.
Nyní se vraťte a spusťte kód. Neobjeví se žádné chyby. protože VBA dokáže rozpoznat Slovníkový objekt tentokrát.
⧪ Řešení 2: Deklarace jako čistý objekt, nikoli jako konkrétní objekt
Tento problém lze vyřešit i jinak: objekt můžete deklarovat jako čistý objekt, nikoli jako Slovníkový objekt .
Všimněte si následujících řádků kódů.
Sub User_Defined_Type_not_Defined() Dim MyDictionary As Object Set MyDictionary = CreateObject("Scripting.Dictionary") End Sub
Zde jsem deklaroval proměnnou MyDictionary jako jednoduchý objekt, nikoli jako Slovník. Pokud nyní spustíte tento kód, nezobrazí se žádná chyba.