: Exceli VBAs määratlemata kasutaja määratud tüüp (2 kiiret lahendust)

  • Jaga Seda
Hugh West

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

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

Hugh West on suurte kogemustega Exceli koolitaja ja analüütik, kellel on selles valdkonnas üle 10-aastane kogemus. Tal on raamatupidamise ja rahanduse bakalaureusekraad ning ärijuhtimise magistrikraad. Hugh’l on kirg õpetamise vastu ning ta on välja töötanud ainulaadse õpetamisviisi, mida on lihtne järgida ja mõista. Tema Exceli ekspertteadmised on aidanud tuhandetel õpilastel ja spetsialistidel üle maailma oma oskusi parandada ja karjääris silma paista. Oma ajaveebi kaudu jagab Hugh oma teadmisi maailmaga, pakkudes tasuta Exceli õpetusi ja veebikoolitusi, mis aitavad üksikisikutel ja ettevõtetel oma potentsiaali täielikult ära kasutada.