: Brugerdefineret type, der ikke er defineret i Excel VBA (2 hurtige løsninger)

  • Del Dette
Hugh West

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.xlsm

2 Å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.

Hugh West er en meget erfaren Excel-træner og analytiker med over 10 års erfaring i branchen. Han har en bachelorgrad i regnskab og finans og en kandidatgrad i Business Administration. Hugh har en passion for undervisning og har udviklet en unik undervisningstilgang, der er nem at følge og forstå. Hans ekspertviden om Excel har hjulpet tusindvis af studerende og fagfolk verden over med at forbedre deres færdigheder og udmærke sig i deres karriere. Gennem sin blog deler Hugh sin viden med verden og tilbyder gratis Excel-tutorials og onlinetræning for at hjælpe enkeltpersoner og virksomheder med at nå deres fulde potentiale.