: Användardefinierad typ som inte är definierad i Excel VBA (2 snabblösningar)

  • Dela Detta
Hugh West

Ett av de vanligaste felen som vi möter när vi arbetar med VBA i Excel är att den användardefinierade typen inte är definierad. I den här artikeln visar jag varför det här felet uppstår och hur du löser det.

Ladda ner övningsboken

Ladda ner den här arbetsboken för att träna medan du läser den här artikeln.

Användardefinierad typ ej definierad.xlsm

2 Orsaker till och lösningar på Användardefinierad typ som inte är definierad i Excel VBA

Det finns 2 De viktigaste frågorna bakom detta vanliga fel i Excel. VBA Låt oss undersöka dem i detalj och ta reda på hur de kan lösas.

1. Stavfel vid deklaration av variabler

Detta är den främsta orsaken till felet. Oftast är felet "Användardefinierad typ ej definierad" beror på ett stavfel vid deklaration av variabler.

Titta på följande rader av koder.

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

Om du kör den här koden får du en felruta som meddelar dig att felet finns "Användardefinierad typ ej definierad". Tillsammans med den hittar du den andra raden i koden markerad i blått, där jag skrev "strng" i stället för "sträng" .

Jag hoppas att du förstår vad jag menar. VBA kunde inte känna igen variabeltypen "strng" Därför betraktade den den som en ny variabeltyp och trodde att du hade definierat den någonstans, men när den upptäckte att du inte hade deklarerat den någonstans, uppstod ett fel.

När man kör enkla VBA koder, om du ändå stöter på detta fel, kontrollera först alla stavningar av dina variabeltyper.

2. Brist på korrekta referenser

Det finns en annan orsak till felet, nämligen brist på korrekt hänvisning. Ibland använder vi vissa objekt i våra koder som behöver korrekt hänvisning från Visual Basic-referensrutan . Annars, VBA inte känner igen objektet.

Titta på följande VBA kod.

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

Kör den här koden och du får samma gamla fel. "Användardefinierad typ ej definierad", att belysa den Ordboksobjekt Detta beror på att VBA kunde inte känna igen den Ordboksobjekt och betraktade den som en användardefinierad variabel som inte har definierats felaktigt.

Den största frågan är nu hur man löser detta fel? Enkelt. 2 sätt att lösa detta fel.

⧪ Lösning 1: Kontrollera förutsättningsreferensen från referensrutan i Visual Box

Det här är det smartaste sättet att lösa problemet: Gå till Verktyg> Referenser knappen i Visual Basic band. Klicka på Referenser .

En dialogruta med namnet Referenser öppnas. Bläddra och hitta Microsoft Scripting Runtime (Detta beror på vilket objekt du använder. Ordboksobjekt behöver Microsoft Scripting Runtime att känna igen. Så när du använder ett objekt i en VBA kod, måste du känna till dess förutsättningar för att bli erkänd av VBA. Besök den här länken för mer information.).

Kom nu tillbaka och kör koden och du får inga fel. VBA kan känna igen den Ordboksobjekt den här gången.

⧪ Lösning 2: Ange det som ett rent objekt i stället för ett specifikt objekt

Det finns ett annat sätt att lösa problemet: Du kan deklarera objektet som ett rent objekt, istället för som en Ordboksobjekt .

Lägg märke till följande rader av koder.

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

Här har jag deklarerat variabeln Min ordbok som ett enkelt objekt, inte ett Ordbok. Om du kör den här koden får du inget fel.

Hugh West är en mycket erfaren Excel-tränare och analytiker med över 10 års erfarenhet i branschen. Han har en kandidatexamen i redovisning och ekonomi och en magisterexamen i företagsekonomi. Hugh har en passion för undervisning och har utvecklat ett unikt undervisningssätt som är lätt att följa och förstå. Hans expertkunskap om Excel har hjälpt tusentals studenter och yrkesverksamma över hela världen att förbättra sina färdigheter och utmärka sig i sina karriärer. Genom sin blogg delar Hugh med sig av sin kunskap med världen, och erbjuder gratis Excel-handledning och onlineutbildning för att hjälpa individer och företag att nå sin fulla potential.