Efnisyfirlit
Ein algengasta villan sem við stöndum frammi fyrir þegar unnið er með VBA í Excel er að notendaskilgreind gerð er ekki skilgreind. Í þessari grein mun ég sýna þér hvers vegna þessi villa stafar af og hvernig á að leysa þessa villu.
Hlaða niður æfingarvinnubók
Hlaða niður þessari æfingu til að æfa á meðan þú eru að lesa þessa grein.
User-Defined Type Not Defined.xlsm
2 orsakir og lausnir við User Defined Tegund ekki skilgreind í Excel VBA
Það eru 2 stór vandamál á bak við þessa algengu villu í Excel VBA . Við skulum kanna þau í smáatriðum og finna leiðir til að leysa þau.
1. Stafsetningarvilla við að lýsa yfir breytum
Þetta er aðalástæðan á bak við þessa villu. Oftast stafar villan „User-Defined Type not Defined“ vegna stafsetningarvillu þegar verið er að lýsa breytum.
Skoðaðu eftirfarandi línur af kóða.
1761
Ef þú keyrir þennan kóða færðu villukassa sem lætur þig vita um tilvist villunnar “User-Defined Type Not Defined”. Ásamt því finnurðu aðra línu kóðans auðkennd með bláu, þar sem ég skrifaði “strng” í stað “streng” .
Ég vona að þú skiljir pointið. VBA gat ekki þekkt breytutegundina “strng” , þess vegna leit hún á hana sem nýja breytutegund og hélt að þú hefðir skilgreint hana einhvers staðar. En þegar þaðfann að þú hefur ekki lýst því yfir neins staðar, það vakti villu.
Þess vegna, á meðan þú keyrir einfalda VBA kóða, ef þú lendir í þessari villu hvort sem er, athugaðu fyrst allar stafsetningar breytutegundanna þinna.
2. Skortur á réttri tilvísun
Þetta er önnur orsök á bak við þessa villu. Það er skortur á réttri tilvísun. Stundum notum við suma hluti í kóðanum okkar sem þarfnast réttrar tilvísunar úr Visual Basic Reference kassanum . Annars þekkir VBA ekki hlutinn.
Skoðaðu eftirfarandi VBA kóða.
2989
Keyra þennan kóða. Þú munt fá sömu gömlu villuna „Notandaskilgreind tegund ekki skilgreind“, að auðkenna Orðabókarhlutinn . Þetta er vegna þess að VBA gat ekki þekkt Orðabókarhlutinn og taldi hann vera notendaskilgreinda breytu, sem hefur ekki verið skilgreind fyrir mistök.
Nú er stærsta spurningin, hvernig á að leysa þessa villu? Auðvelt. Það eru 2 leiðir til að leysa þessa villu.
⧪ Lausn 1: Athugaðu forkröfutilvísunina úr tilvísunarboxinu í Visual Box
Þetta er snjöllustu leiðin til að leysa þetta vandamál. Farðu í Tól > Tilvísanir hnappinn í Visual Basic borðinu. Smelltu á References .
Valur sem heitir References opnast. Skrunaðu og finndu Microsoft Scripting Runtime (Þetta fer eftir hlutnum sem þú ert að nota. Orðabókinhlutur þarf að þekkja Microsoft Scripting Runtime . Svo, meðan þú notar hlut í VBA kóða, verður þú að vita forsendur hans til að vera viðurkenndur af VBA. Farðu á þennan hlekk til að fá frekari upplýsingar.). Athugaðu það.
Komdu nú aftur og keyrðu kóðann. Þú færð engar villur. Vegna þess að VBA getur þekkt Orðabókarhlutinn að þessu sinni.
⧪ Lausn 2: Að lýsa því yfir sem hreinum hlut frekar en sérstökum hlut
Það er önnur leið til að leysa þetta vandamál. Þú getur lýst hlutnum sem hreinum hlut, frekar en Orðabókarhlut .
Taktu eftir eftirfarandi kóðalínum.
5878
Hér hef ég lýst breytunni MyDictionary sem einfaldan hlut, ekki Orðabók. Nú ef þú keyrir þennan kóða færðu enga villu.