: Tip definit de utilizator nedefinit în Excel VBA (2 soluții rapide)

  • Imparte Asta
Hugh West

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

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

Hugh West este un trainer și analist Excel cu o experiență de peste 10 ani în industrie. Deține o diplomă de licență în contabilitate și finanțe și un master în administrarea afacerilor. Hugh are o pasiune pentru predare și a dezvoltat o abordare unică de predare care este ușor de urmărit și de înțeles. Cunoștințele sale experte despre Excel au ajutat mii de studenți și profesioniști din întreaga lume să-și îmbunătățească abilitățile și să exceleze în cariera lor. Prin blogul său, Hugh își împărtășește cunoștințele lumii, oferind tutoriale gratuite Excel și instruire online pentru a ajuta persoanele și companiile să-și atingă întregul potențial.