Kazalo
Ena najpogostejših napak, s katerimi se srečujemo pri delu z VBA v Excelu je, da uporabniško opredeljena vrsta ni opredeljena. V tem članku vam bom pokazal, zakaj pride do te napake in kako jo odpraviti.
Prenesi delovni zvezek za prakso
Prenesite ta delovni zvezek za vadbo, ki ga lahko uporabljate med branjem tega članka.
Uporabniško opredeljena vrsta ni opredeljena.xlsm2 Vzroki in rešitve za Uporabniško določena vrsta ni opredeljena v programu Excel VBA
Obstajajo 2 glavne težave, ki stojijo za to pogosto napako v programu Excel VBA . Podrobno jih raziščimo in poiščimo načine, kako jih rešiti.
1. Pravopisna napaka pri deklariranju spremenljivk
To je glavni razlog za to napako. Večinoma je napaka "Uporabniško opredeljena vrsta ni opredeljena" je posledica pravopisne napake pri deklariranju spremenljivk.
Oglejte si naslednje vrstice kode.
Sub User_Defined_Type_not_Defined() Dim Name As Strng Name = "ExcelWIKI" MsgBox Name End Sub
Če zaženete to kodo, se prikaže okence za napako, ki vas obvešča o napaki. "Uporabniško opredeljena vrsta ni opredeljena". Poleg nje boste našli drugo vrstico kode, ki je označena z modro, kjer sem napisal "strng" namesto "string" .
Upam, da ste razumeli bistvo. VBA ni mogel prepoznati tipa spremenljivke "strng" zato jo je obravnaval kot novo vrsto spremenljivke in mislil, da ste jo nekje definirali. Ko pa je ugotovil, da je niste nikjer deklarirali, je sprožil napako.
Zato med izvajanjem preprostih VBA kode, če vseeno naletite na to napako, najprej preverite črkovanje vseh vrst spremenljivk.
2. Pomanjkanje ustreznega sklicevanja
To je še en vzrok za to napako. To je pomanjkanje ustreznega sklicevanja. Včasih v naših kodah uporabljamo nekatere predmete, ki potrebujejo ustrezno sklicevanje iz Referenčno polje Visual Basic ... Sicer pa, VBA ne prepozna predmeta.
Oglejte si naslednje VBA koda.
Sub User_Defined_Type_not_Defined() Dim MyDictionary As Dictionary Set MyDictionary = CreateObject("Scripting.Dictionary") End Sub
Zaženite to kodo. Dobili boste enako staro napako "Uporabniško opredeljena vrsta ni opredeljena", poudarjanje Predmet slovarja . To je zato, ker VBA ni mogel prepoznati Predmet slovarja in jo obravnaval kot uporabniško določeno spremenljivko, ki ni bila napačno opredeljena.
Največje vprašanje je, kako odpraviti to napako? Enostavno. 2 načinov za odpravo te napake.
⧪ Rešitev 1: Preverjanje referenčnega pogoja iz referenčnega polja vizualnega okna
To je najpametnejši način za rešitev te težave. Orodja> Reference gumb v Visual Basic trak. Kliknite na Reference .
Pogovorno okno z imenom Reference se bo odprl. Pomaknite se in poiščite Microsoftovo okolje za izvajanje skriptov (To je odvisno od predmeta, ki ga uporabljate. Predmet slovarja potrebuje Microsoftovo okolje za izvajanje skriptov tako, da se prepozna. Torej, ko uporabljate predmet v VBA kodo, morate poznati njen predpogoj, da jo prepozna VBA. Za več informacij obiščite to povezavo.).
Zdaj se vrnite in zaženite kodo. Ne boste dobili nobenih napak. ker VBA lahko prepozna Predmet slovarja tokrat.
⧪ Rešitev 2: Deklaracija kot čistega objekta in ne kot posebnega objekta
To težavo lahko rešite še na drug način: objekt lahko deklarirate kot čisti objekt in ne kot Predmet slovarja .
Oglejte si naslednje vrstice kode.
Sub User_Defined_Type_not_Defined() Dim MyDictionary As Object Set MyDictionary = CreateObject("Scripting.Dictionary") End Sub
Tukaj sem deklariral spremenljivko MyDictionary kot preprost predmet in ne kot Slovar. Če zdaj zaženete to kodo, ne boste dobili nobene napake.