Innholdsfortegnelse
En av de vanligste feilene vi møter når vi jobber med VBA i Excel, er at den brukerdefinerte typen ikke er definert. I denne artikkelen skal jeg vise deg hvorfor denne feilen er forårsaket og hvordan du løser denne feilen.
Last ned øvelsesarbeidsbok
Last ned denne øvelsesarbeidsboken for å trene mens du leser denne artikkelen.
Brukerdefinert type ikke definert.xlsm
2 årsaker og løsninger til Brukerdefinert Type ikke definert i Excel VBA
Det er 2 store problemer bak denne ofte oppståtte feilen i Excel VBA . La oss utforske dem i detalj og finne ut hvordan du kan løse dem.
1. Stavefeil under deklarering av variabler
Dette er hovedårsaken bak denne feilen. Mesteparten av tiden er feilen “Brukerdefinert type ikke definert” forårsaket på grunn av en stavefeil under deklarering av variabler.
Se på følgende linjer med koder.
9487
Hvis du kjører denne koden, vil du få en feilboks som varsler deg om tilstedeværelsen av feilen “User-Defined Type Not Defined”. Sammen med den finner du den andre linjen i koden uthevet i blått, der jeg skrev “strng” i stedet for “string” .
Jeg håper du forstår poenget. VBA kunne ikke gjenkjenne variabeltypen “strng” , det er derfor den betraktet den som en ny variabeltype og trodde du har definert den et sted. Men når detfant at du ikke har deklarert det noe sted, oppsto det en feil.
Derfor, mens du kjører enkle VBA -koder, hvis du uansett støter på denne feilen, kontroller først alle stavemåtene til variabeltypene dine.
2. Mangel på riktig referanse
Dette er en annen årsak bak denne feilen. Det er mangel på riktig referanse. Noen ganger bruker vi noen objekter i kodene våre som trenger riktig referanse fra Visual Basic Reference-boksen . Ellers gjenkjenner ikke VBA objektet.
Se på følgende VBA -kode.
2578
Kjør denne koden. Du får den samme gamle feilen “Brukerdefinert type ikke definert”, uthever Ordbokobjektet . Dette er fordi VBA ikke kunne gjenkjenne Dictionary-objektet , og betraktet det som en brukerdefinert variabel, som ikke har blitt definert feilaktig.
Nå er det største spørsmålet, hvordan løser jeg denne feilen? Lett. Det er 2 måter å løse denne feilen på.
⧪ Løsning 1: Sjekke forutsetningsreferansen fra Visual Box Reference Box
Dette er smarteste måten å løse dette problemet på. Gå til Verktøy > Referanser -knappen i Visual Basic -båndet. Klikk på Referanser .
En dialogboks kalt Referanser åpnes. Bla og finn Microsoft Scripting Runtime (Dette avhenger av objektet du bruker. Ordbokenobjekt må Microsoft Scripting Runtime gjenkjennes. Så mens du bruker et objekt i en VBA -kode, må du kjenne dens forutsetning for å bli gjenkjent av VBA. Besøk denne lenken for mer informasjon.). Sjekk det.
Nå kom tilbake og kjør koden. Du får ingen feil. Fordi VBA kan gjenkjenne Dictionary-objektet denne gangen.
⧪ Løsning 2: Erklære det som et rent objekt i stedet for et spesifikt objekt
Det er en annen måte å løse dette problemet på. Du kan erklære objektet som et rent objekt, i stedet for et Ordbokobjekt .
Legg merke til følgende kodelinjer.
8798
Her har jeg erklært variabelen MyDictionary som et enkelt objekt, ikke en Ordbok. Hvis du kjører denne koden, får du ingen feilmelding.