INHOUDSOPGAWE
Een van die mees algemene foute wat ons in die gesig staar terwyl ons met VBA in Excel werk, is dat die gebruikergedefinieerde tipe nie gedefinieer is nie. In hierdie artikel sal ek jou wys hoekom hierdie fout veroorsaak word en hoe om hierdie fout op te los.
Laai Oefenwerkboek af
Laai hierdie oefenwerkboek af om te oefen terwyl jy lees hierdie artikel.
Gebruiker-gedefinieerde tipe nie gedefinieer nie.xlsm
2 oorsake en oplossings vir Gebruiker gedefinieerde Tipe nie gedefinieer in Excel VBA
Daar is 2 groot probleme agter hierdie gereelde fout in Excel VBA . Kom ons verken hulle in detail en vind die maniere uit om dit op te los.
1. Spelfout terwyl veranderlikes verklaar word
Dit is die hoofrede agter hierdie fout. Meeste van die tyd word die fout “Gebruiker-gedefinieerde tipe nie gedefinieer nie” veroorsaak as gevolg van 'n spelfout terwyl veranderlikes verklaar word.
Kyk na die volgende reëls kodes.
8055
As jy hierdie kode gebruik, sal jy 'n foutblokkie kry wat jou in kennis stel van die teenwoordigheid van die fout “Gebruiker-gedefinieerde tipe nie gedefinieer nie”. Saam met dit, sal jy die tweede reël van die kode in blou uitgelig vind, waar ek “strng” in die plek van “string” geskryf het.
Ek hoop jy verstaan die punt. VBA kon nie die veranderlike tipe “strng” herken nie, daarom het dit dit as 'n nuwe veranderlike tipe beskou en gedink jy het dit iewers gedefinieer. Maar wanneer ditgevind dat jy dit nêrens verklaar het nie, het dit 'n fout laat ontstaan.
Daarom, terwyl jy eenvoudige VBA -kodes gebruik, as jy in elk geval hierdie fout teëkom, gaan eers al die spellings van jou veranderlike tipes na.
2. Gebrek aan behoorlike verwysing
Dit is nog 'n oorsaak agter hierdie fout. Dit is 'n gebrek aan behoorlike verwysing. Soms gebruik ons 'n paar voorwerpe in ons kodes wat behoorlike verwysing van die Visuele Basiese Verwysing boks benodig. Andersins herken VBA nie die voorwerp nie.
Kyk na die volgende VBA -kode.
6906
Begin hierdie kode. Jy sal dieselfde ou fout kry “Gebruikergedefinieerde tipe nie gedefinieer nie”, wat die Woordeboekvoorwerp uitlig. Dit is omdat VBA nie die Woordeboekobjek kon herken nie, en dit as 'n gebruikergedefinieerde veranderlike beskou het, wat nie verkeerdelik gedefinieer is nie.
Nou is die grootste vraag, hoe om hierdie fout op te los? Maklik. Daar is 2 maniere om hierdie fout op te los.
⧪ Oplossing 1: Kontroleer die Voorvereiste Verwysing vanaf die Visual Box Reference Box
Dit is die slimste manier om hierdie probleem op te los. Gaan na die Tools > Verwysings -knoppie in die Visual Basic -lint. Klik op Verwysings .
'n Dialoogkassie genaamd Verwysings sal oopmaak. Blaai en vind Microsoft Scripting Runtime (Dit hang af van die voorwerp wat jy gebruik. Die Woordeboekobjek moet Microsoft Scripting Runtime herken word. Dus, terwyl jy 'n voorwerp in 'n VBA -kode gebruik, moet jy die voorvereiste ken om deur VBA herken te word. Besoek hierdie skakel vir meer inligting.). Gaan dit na.
Kom nou terug en voer die kode uit. Jy sal geen foute kry nie. Omdat VBA hierdie keer die Woordeboekobjek kan herken.
⧪ Oplossing 2: Verklaar dit as 'n suiwer voorwerp eerder as 'n spesifieke voorwerp
Daar is 'n ander manier om hierdie probleem op te los. Jy kan die voorwerp as 'n suiwer voorwerp verklaar, eerder as 'n Woordeboekvoorwerp .
Let op die volgende reëls kodes.
5341
Hier het ek die veranderlike MyDictionary as 'n eenvoudige objek verklaar, nie 'n Woordeboek nie. As jy nou hierdie kode gebruik, sal jy geen fout kry nie.