Indholdsfortegnelse
En af de mest almindelige fejl, som vi støder på, når vi arbejder med VBA i Excel er, at den brugerdefinerede type ikke er defineret. I denne artikel vil jeg vise dig, hvorfor denne fejl opstår, og hvordan du løser fejlen.
Download arbejdsbog til øvelser
Download denne arbejdsbog til træning, så du kan øve dig, mens du læser denne artikel.
Brugerdefineret type Ikke defineret.xlsm2 Årsager til og løsninger på Brugerdefineret type ikke defineret i Excel VBA
Der er 2 de vigtigste problemer bag denne hyppigt forekommende fejl i Excel VBA Lad os undersøge dem i detaljer og finde ud af, hvordan de kan løses.
1. Stavefejl ved angivelse af variabler
Dette er hovedårsagen til denne fejl. Oftest er fejlen "Brugerdefineret type ikke defineret" skyldes en stavefejl i forbindelse med deklaration af variabler.
Se på følgende kodelinjer.
Sub User_Defined_Type_not_Defined() Dim Name As Strng Name = "ExcelWIKI" MsgBox Name End Sub
Hvis du kører denne kode, får du en fejlboks, der informerer dig om, at fejlen er til stede "Brugerdefineret type ikke defineret". Sammen med den finder du den anden linje i koden markeret med blå farve, hvor jeg skrev "strng" i stedet for "string" .
Jeg håber, at du forstår pointen. VBA kunne ikke genkende variabeltypen "strng" Derfor betragtede den den som en ny variabel type og troede, at du havde defineret den et eller andet sted, men da den fandt ud af, at du ikke havde deklareret den et eller andet sted, gav den en fejl.
Derfor kan man, mens man kører simple VBA koder, hvis du alligevel støder på denne fejl, skal du først kontrollere alle stavemåder for dine variabeltyper.
2. Manglende korrekt referencelægning
Der er en anden årsag til denne fejl, nemlig manglende korrekt henvisning. Nogle gange bruger vi nogle objekter i vores koder, som skal refereres korrekt fra den Visual Basic referenceboks . Ellers, VBA ikke genkender objektet.
Se på følgende VBA kode.
Sub User_Defined_Type_not_Defined() Dim MyDictionary As Dictionary Set MyDictionary = CreateObject("Scripting.Dictionary") End Sub
Kør denne kode. Du får den samme gamle fejl "Brugerdefineret type ikke defineret", fremhæver den Ordbogsobjekt Det skyldes, at VBA kunne ikke genkende den Ordbogsobjekt , og betragtede den som en brugerdefineret variabel, som ikke er blevet defineret ved en fejltagelse.
Det største spørgsmål er nu, hvordan man løser denne fejl? Let. Der er 2 måder at løse denne fejl på.
⧪ Løsning 1: Kontrol af forudsætningsreferencen fra Visual Box-referenceboksen
Dette er den smarteste måde at løse dette problem på: Gå til Værktøj> Referencer knappen i Visual Basic bånd. Klik på Referencer .
En dialogboks kaldet Referencer åbnes. Rul rundt og find Microsoft Scripting Runtime (Dette afhænger af det objekt, som du bruger. Ordbogsobjekt har brug for Microsoft Scripting Runtime at blive genkendt. Så når du bruger et objekt i en VBA kode, skal du kende dens forudsætning for at blive anerkendt af VBA. Besøg dette link for at få flere oplysninger.).
Kom nu tilbage og kør koden. Du får ingen fejl. fordi VBA kan genkende den Ordbogsobjekt denne gang.
⧪ Løsning 2: Angiv det som et rent objekt i stedet for et specifikt objekt
Der er en anden måde at løse dette problem på: Du kan erklære objektet som et rent objekt i stedet for en Ordbogsobjekt .
Bemærk følgende kodelinjer.
Sub User_Defined_Type_not_Defined() Dim MyDictionary As Object Set MyDictionary = CreateObject("Scripting.Dictionary") End Sub
Her har jeg erklæret variablen MyDictionary som et simpelt objekt, ikke et Ordbog. Hvis du nu kører denne kode, får du ikke nogen fejl.