Inhoudsopgave
Een van de meest voorkomende fouten die we tegenkomen bij het werken met VBA in Excel is dat het door de gebruiker gedefinieerde type niet is gedefinieerd. In dit artikel laat ik u zien waarom deze fout wordt veroorzaakt en hoe u deze fout kunt oplossen.
Download Praktijk Werkboek
Download dit oefenwerkboek om te oefenen terwijl u dit artikel leest.
User-Defined Type Not Defined.xlsm2 Oorzaken en oplossingen voor Door gebruiker gedefinieerd type niet gedefinieerd in Excel VBA
Er zijn 2 belangrijkste problemen achter deze vaak voorkomende fout in Excel VBA Laten we ze in detail onderzoeken en manieren vinden om ze op te lossen.
1. Spelfout bij het declareren van variabelen
Dit is de belangrijkste reden achter deze fout. Meestal is de fout "User-Defined Type niet gedefinieerd" wordt veroorzaakt door een spelfout bij het declareren van variabelen.
Kijk naar de volgende regels code.
Sub User_Defined_Type_not_Defined() Dim Name As Strng Name = "ExcelWIKI" MsgBox Name End Sub
Als u deze code uitvoert, krijgt u een foutvenster dat u de aanwezigheid van de fout meldt "User-Defined Type Not Defined". Daarbij vind je de tweede regel van de code in blauw gemarkeerd, waar ik schreef "strng" in plaats van "string" .
Ik hoop dat je het snapt. VBA kon het variabele type niet herkennen "strng" Daarom beschouwde het het als een nieuw variabelentype en dacht dat u het ergens had gedefinieerd. Maar toen het ontdekte dat u het nergens had gedeclareerd, gaf het een foutmelding.
Daarom, tijdens het uitvoeren van eenvoudige VBA codes, als u deze fout toch tegenkomt, controleer dan eerst alle schrijfwijzen van uw variabele types.
2. Gebrek aan goede verwijzingen
Dit is een andere oorzaak achter deze fout. Dat is een gebrek aan goede verwijzingen. Soms gebruiken we sommige objecten in onze codes die een goede verwijzing nodig hebben van de Visual Basic referentiekader . Anders, VBA herkent het object niet.
Kijk naar het volgende VBA code.
Sub User_Defined_Type_not_Defined() Dim MyDictionary As Dictionary Set MyDictionary = CreateObject("Scripting.Dictionary") End Sub
Voer deze code uit. Je krijgt dezelfde oude foutmelding "User-Defined Type not Defined", het benadrukken van de Woordenboek object Dit is omdat VBA kon de Woordenboek object , en beschouwd als een door de gebruiker gedefinieerde variabele, die niet verkeerd gedefinieerd is.
Nu is de grootste vraag, hoe deze fout op te lossen? Gemakkelijk. Er zijn 2 manieren om deze fout op te lossen.
⧪ Oplossing 1: De referentie van de voorwaarde controleren vanuit de Visual Box Reference Box
Dit is de slimste manier om dit probleem op te lossen. Ga naar de Gereedschap> Referenties knop in de Visual Basic lint. Klik op Referenties .
Een dialoogvenster genaamd Referenties zal openen. Scroll en zoek Microsoft Scripting Runtime (Dit hangt af van het object dat u gebruikt. De Woordenboek object heeft nodig Microsoft Scripting Runtime om herkend te worden. Dus, tijdens het gebruik van een object in een VBA code, moet je de voorwaarde kennen om herkend te worden door VBA. Bezoek deze link voor meer informatie.) Controleer het.
Kom nu terug en voer de code uit. Je zult geen fouten krijgen. Want VBA kan de Woordenboek object deze keer.
⧪ Oplossing 2: Declareren als een zuiver object in plaats van een specifiek object
Er is een andere manier om dit probleem op te lossen. U kunt het object declareren als een zuiver object, in plaats van een Woordenboek object .
Let op de volgende coderegels.
Sub User_Defined_Type_not_Defined() Dim MyDictionary As Object Set MyDictionary = CreateObject("Scripting.Dictionary") End Sub
Hier heb ik de variabele MyDictionary als een eenvoudig object, niet een Woordenboek. Als je deze code uitvoert, krijg je geen foutmelding.