: Meidogger definieare type net definieare yn Excel VBA (2 rappe oplossingen)

  • Diel Dit
Hugh West

Ien fan 'e meast foarkommende flaters dy't wy tsjinkomme by it wurkjen mei VBA yn Excel is dat it troch de brûker definieare type net definiearre is. Yn dit artikel sil ik jo sjen litte wêrom't dizze flater feroarsake wurdt en hoe't jo dizze flater oplosse kinne.

Download Practice Workbook

Download dit oefenwurkboek om te oefenjen wylst jo lêze dit artikel.

Meidogger-Defined Type Not Defined.xlsm

2 Causes and Solutions to User Defined Type net definiearre yn Excel VBA

Der binne 2 grutte problemen efter dizze faaks tsjinkaam flater yn Excel VBA . Litte wy se yn detail ûndersykje en de manieren fine om se op te lossen.

1. Staveringsflater by it deklarearjen fan fariabelen

Dit is de wichtichste reden efter dizze flater. Meastentiids wurdt de flater "User-Defined Type not Defined" feroarsake troch in staveringsflater by it deklarearjen fan fariabelen.

Sjoch nei de folgjende rigels mei koades.

6549

As jo ​​dizze koade útfiere, sille jo in flaterfakje krije dy't jo op 'e hichte bringt fan' e oanwêzigens fan 'e flater "User-Defined Type Not Defined". Dêrmei sille jo de twadde rigel fan 'e koade yn blau markearre fine, wêr't ik "strng" skreau yn plak fan "string" .

Ik hoopje dat jo it punt begripe. VBA koe it fariabele type “strng” net werkenne, dêrom beskôge it it as in nij fariabele type en tocht dat jo it earne definieare hawwe. Mar wannear't itfûn dat jo it nergens ferklearre hawwe, joech it in flater op.

Dêrom, wylst jo ienfâldige VBA -koades útfiere, as jo dizze flater dochs tsjinkomme, kontrolearje dan earst alle staveringen fan jo fariabeletypen.

2. Gebrek oan juste ferwizings

Dit is in oare oarsaak efter dizze flater. Dat is in gebrek oan goede ferwizing. Soms brûke wy guon objekten yn ús koades dy't in goede ferwizing nedich binne fanút it fak Visual Basic Reference . Oars herkent VBA it objekt net.

Sjoch nei de folgjende VBA -koade.

2589

Rinne dizze koade. Jo krije deselde âlde flater “User-Defined Type not Defined”, markearje it Dictionary-objekt . Dit komt om't VBA it Dictionary-objekt net werkenne koe, en it beskôge as in troch de brûker definiearre fariabele, dy't net ferkeard definiearre is.

No is de grutste fraach, hoe kinne jo dizze flater oplosse? Maklik. D'r binne 2 manieren om dizze flater op te lossen.

⧪ Oplossing 1: Kontrolearje de betingstferwizing út it Visual Box Reference Box

Dit is de tûkste manier om dit probleem op te lossen. Gean nei de Tools > References knop yn it Visual Basic lint. Klik op References .

In dialoochfinster mei de namme References sil iepenje. Rôlje en fyn Microsoft Scripting Runtime (Dit hinget ôf fan it objekt dat jo brûke. It Dictionaryobjekt moat Microsoft Scripting Runtime erkend wurde. Dus, by it brûken fan in objekt yn in VBA -koade, moatte jo de betingst dêrfan witte om te erkennen troch VBA. Besykje dizze keppeling foar mear ynformaasje.). Kontrolearje it.

Kom no werom en fier de koade út. Jo sille gjin flaters krije. Omdat VBA dizze kear it Dictionary-objekt werkenne kin.

⧪ Solution 2: Declaring It as a Pure Object ynstee fan in Specific Object

D'r is in oare manier om dit probleem op te lossen. Jo kinne it objekt ferklearje as in suver objekt, yn stee fan in Dictionary-objekt .

Let op de folgjende rigels fan koades.

5428

Hjir haw ik de fariabele MyDictionary ferklearre as in ienfâldich objekt, net in Dictionary. No as jo dizze koade útfiere, krije jo gjin flater.

Hugh West is in tige betûfte Excel-trainer en analist mei mear as 10 jier ûnderfining yn 'e yndustry. Hy hat in bachelorstitel yn boekhâlding en finânsjes en in masterstitel yn bedriuwsadministraasje. Hugh hat in passy foar lesjaan en hat in unike lesoanpak ûntwikkele dy't maklik te folgjen en te begripen is. Syn saakkundige kennis fan Excel hat tûzenen studinten en professionals wrâldwiid holpen har feardigens te ferbetterjen en útblinke yn har karriêre. Troch syn blog dielt Hugh syn kennis mei de wrâld, en biedt fergese Excel-tutorials en online training om partikulieren en bedriuwen te helpen har folsleine potensjeel te berikken.