Cuprins
Una dintre cele mai frecvente erori cu care ne confruntăm atunci când lucrăm cu VBA în Excel este că tipul definit de utilizator nu este definit. În acest articol, vă voi arăta de ce este cauzată această eroare și cum să o rezolvați.
Descărcați caietul de practică
Descărcați acest caiet de exerciții pentru a vă exercita în timp ce citiți acest articol.
Tip definit de utilizator nedefinit.xlsm2 Cauze și soluții pentru Tipul definit de utilizator nu este definit în Excel VBA
Există 2 problemele majore care stau la baza acestei erori frecvent întâlnite în Excel VBA Să le explorăm în detaliu și să aflăm modalitățile de rezolvare a acestora.
1. Eroare de ortografie în timpul declarării variabilelor
Acesta este motivul principal din spatele acestei erori. De cele mai multe ori, eroarea "Tip definit de utilizator nedefinit" este cauzată de o greșeală de ortografie în timpul declarării variabilelor.
Priviți următoarele linii de cod.
Sub User_Defined_Type_not_Defined() Dim Name As Strng Name = "ExcelWIKI" MsgBox Name End Sub
Dacă rulați acest cod, veți primi o casetă de eroare care vă notifică prezența erorii "Tip definit de utilizator nedefinit". Împreună cu aceasta, veți găsi a doua linie de cod evidențiată în albastru, unde am scris "strng" în loc de "string" .
Sper că ați înțeles ce vreau să spun. VBA nu a putut recunoaște tipul de variabilă "strng" De aceea, a considerat-o ca fiind un nou tip de variabilă și a crezut că ați definit-o undeva, dar când a constatat că nu ați declarat-o nicăieri, a generat o eroare.
Prin urmare, în timp ce se execută simple VBA coduri, dacă totuși întâmpinați această eroare, verificați mai întâi toate ortografiile tipurilor de variabile.
2. Lipsa unei referențieri adecvate
Aceasta este o altă cauză din spatele acestei erori. Aceasta este lipsa unei referințe adecvate. Uneori folosim anumite obiecte în codurile noastre care au nevoie de o referință adecvată din Caseta de referință Visual Basic . Altfel, VBA nu recunoaște obiectul.
Priviți următoarele VBA cod.
Sub User_Defined_Type_not_Defined() Dim MyDictionary As Dictionary Set MyDictionary = CreateObject("Scripting.Dictionary") End Sub
Rulați acest cod. Veți obține aceeași eroare veche "Tip definit de utilizator nedefinit", evidențiind Obiect dicționar Asta pentru că... VBA nu a putut recunoaște Obiect dicționar , și a considerat-o ca fiind o variabilă definită de utilizator, care nu a fost definită din greșeală.
Acum, cea mai mare întrebare este, cum să rezolvăm această eroare? Ușor. Există 2 modalități de a rezolva această eroare.
⧪ Soluția 1: Verificarea referinței de condiții prealabile din caseta de referință Visual Box Reference Box
Acesta este cel mai inteligent mod de a rezolva această problemă: mergeți la Instrumente> Referințe din fereastra Visual Basic panglică. Faceți clic pe Referințe .
Apare o casetă de dialog numită Referințe Se va deschide. Derulați și găsiți Microsoft Scripting Runtime (Acest lucru depinde de obiectul pe care îl utilizați. Obiect dicționar are nevoie de Microsoft Scripting Runtime pentru a fi recunoscută. Astfel, în timp ce se utilizează un obiect în cadrul unei aplicații VBA cod, trebuie să cunoașteți condiția sa prealabilă pentru a fi recunoscut de către VBA. Vizitați acest link pentru mai multe informații.). Verificați.
Acum întoarceți-vă și rulați codul, nu veți primi nicio eroare. Pentru că VBA poate recunoaște Obiect dicționar de data aceasta.
⧪ Soluția 2: Declararea acestuia ca obiect pur și nu ca obiect specific
Există o altă modalitate de a rezolva această problemă. Puteți declara obiectul ca un obiect pur, mai degrabă decât un obiect de tip Obiect dicționar .
Observați următoarele linii de cod.
Sub User_Defined_Type_not_Defined() Dim MyDictionary As Object Set MyDictionary = CreateObject("Scripting.Dictionary") End Sub
Aici am declarat variabila Dicționarul meu ca un simplu obiect, nu ca un Dicționar. Acum, dacă rulați acest cod, nu veți primi nicio eroare.