Sisukord
Üks levinumaid vigu, millega me töötades kokku puutume, on VBA Excelis on see, et kasutaja määratud tüüp ei ole määratletud. Selles artiklis näitan teile, miks see viga tekib ja kuidas seda viga lahendada.
Lae alla praktiline töövihik
Lae alla see harjutusvihik, et seda artiklit lugedes harjutada.
Kasutaja määratud tüüp ei ole määratletud.xlsm2 Põhjused ja lahendused Exceli VBAs määratlemata kasutaja määratud tüüp
On olemas 2 peamised probleemid, mis on selle Exceli sageli esineva vea taga VBA Uurime neid üksikasjalikult ja leiame võimalusi nende lahendamiseks.
1. Õigekirjavead muutujate deklareerimisel
See on selle vea peamine põhjus. Enamasti on viga "Kasutaja määratud tüüp ei ole määratletud" on põhjustatud kirjavigastusest muutujate deklareerimisel.
Vaadake järgmisi koodiridu.
Sub User_Defined_Type_not_Defined() Dim Name As Strng Name = "ExcelWIKI" MsgBox Name End Sub
Kui käivitate selle koodi, siis saate veakasti, mis teavitab teid vea olemasolust "Kasutaja määratud tüüp ei ole määratletud". Koos sellega leiad sinisega esile tõstetud koodi teise rea, kuhu ma kirjutasin "strng" asemel "string" .
Ma loodan, et te saate aru. VBA ei suutnud tuvastada muutuja tüüpi "strng" , mistõttu ta pidas seda uueks muutuja tüübiks ja arvas, et olete selle kuskil defineerinud. Aga kui ta leidis, et te ei ole seda kuskil deklareerinud, tekitas ta vea.
Seetõttu on lihtsate VBA koodid, kui te selle veaga ikkagi kokku puutute, kontrollige kõigepealt oma muutujatüüpide õigekirja.
2. Korrektse viitamise puudumine
Selle vea taga on veel üks põhjus. See on korraliku viitamise puudumine. Mõnikord kasutame oma koodides mõningaid objekte, mis vajavad korralikku viitamist alates Visual Basici viitekast . muidu, VBA ei tunne objekti ära.
Vaadake järgmist VBA kood.
Sub User_Defined_Type_not_Defined() Dim MyDictionary As Dictionary Set MyDictionary = CreateObject("Scripting.Dictionary") End Sub
Käivita see kood. Saate sama vana vea "Kasutaja määratud tüüp ei ole määratletud", rõhutades Sõnastiku objekt Seda seetõttu, et VBA ei suutnud ära tunda Sõnastiku objekt ja pidas seda kasutaja määratud muutujaks, mis ei ole ekslikult määratletud.
Nüüd on suurim küsimus, kuidas seda viga lahendada? Lihtne. On olemas 2 viise selle vea lahendamiseks.
⧪ Lahendus 1: Eelduste viite kontrollimine visuaalse kasti viitekastist
See on kõige nutikam viis selle probleemi lahendamiseks. Minge Tööriistad> Viited nuppu Visual Basic pael. Klõpsake Viited .
Dialoogiboks nimega Viited avaneb. Sirvi ja leia Microsoft Scripting Runtime (See sõltub kasutatavast objektist. Sõnastiku objekt vajab Microsoft Scripting Runtime ära tunda. Seega, kasutades objekti VBA koodi, peate teadma selle eeldust, et seda tunnustaks VBA. Lisateabe saamiseks külastage seda linki.) Kontrollige seda.
Nüüd tulge tagasi ja käivitage kood. Te ei saa ühtegi viga. sest VBA võib ära tunda Sõnastiku objekt seekord.
⧪ Lahendus 2: deklareerimine pigem puhta objektina kui konkreetse objektina
Selle probleemi lahendamiseks on ka teine võimalus. Sa võid deklareerida objekti puhta objektina, mitte aga Sõnastiku objekt .
Pange tähele järgmisi koodiridu.
Sub User_Defined_Type_not_Defined() Dim MyDictionary As Object Set MyDictionary = CreateObject("Scripting.Dictionary") End Sub
Siin olen deklareerinud muutuja MyDictionary lihtsa objektina, mitte Sõnastik. Kui te nüüd seda koodi käivitate, ei saa te ühtegi viga.