Բովանդակություն
Առավել տարածված սխալներից մեկը, որին մենք հանդիպում ենք VBA Excel-ում աշխատելիս այն է, որ օգտագործողի կողմից սահմանված տեսակը սահմանված չէ: Այս հոդվածում ես ձեզ ցույց կտամ, թե ինչու է առաջացել այս սխալը և ինչպես լուծել այս սխալը:
Ներբեռնեք «Practice Workbook»-ը
Ներբեռնեք այս պրակտիկայի աշխատանքային գրքույկը, որպեսզի մարզվեք մինչ դուք կարդում են այս հոդվածը:
User-Defined Type Not Defined.xlsm
2 Պատճառներ և լուծումներ Օգտատիրոջ կողմից սահմանված Type Not Defined in Excel VBA
Կան 2 հիմնական խնդիրներ Excel-ում VBA հաճախ հանդիպող այս սխալի հետևում: Եկեք մանրամասն ուսումնասիրենք դրանք և պարզենք դրանց լուծման ուղիները:
1. Ուղղագրական սխալ փոփոխականներ հայտարարելիս
Սա է այս սխալի հիմնական պատճառը: Շատ ժամանակ «Օգտվողի կողմից սահմանված տեսակը սահմանված չէ» սխալը առաջանում է փոփոխականներ հայտարարելիս ուղղագրական սխալի պատճառով:
Նայեք կոդերի հետևյալ տողերը:
9553
Եթե գործարկեք այս կոդը, դուք կստանաք սխալի տուփ, որը կտեղեկացնի ձեզ սխալի առկայության մասին «Օգտատիրոջ կողմից սահմանված տեսակը սահմանված չէ»: Դրա հետ մեկտեղ դուք կգտնեք կոդի երկրորդ տողը կապույտով ընդգծված, որտեղ ես գրել եմ «strng» «string» -ի փոխարեն:
Հուսով եմ՝ հասկացաք: VBA -ը չկարողացավ ճանաչել փոփոխականի տեսակը “strng” , այդ իսկ պատճառով այն դիտարկեց որպես նոր փոփոխականի տեսակ և մտածեց, որ դուք ինչ-որ տեղ սահմանել եք: Բայց երբ այնպարզվեց, որ դուք այն ոչ մի տեղ չեք հայտարարել, այն սխալ է առաջացրել:
Այդ պատճառով, պարզ VBA կոդերը գործարկելիս, եթե այնուամենայնիվ հանդիպեք այս սխալին, նախ ստուգեք ձեր փոփոխականների տեսակների բոլոր ուղղագրությունները:
2. Պատշաճ հղումների բացակայություն
Սա այս սխալի ևս մեկ պատճառ է: Դա պատշաճ հղումների բացակայություն է: Երբեմն մենք օգտագործում ենք որոշ օբյեկտներ մեր կոդերում, որոնք պահանջում են համապատասխան հղումներ Visual Basic Reference վանդակից : Հակառակ դեպքում, VBA -ը չի ճանաչում օբյեկտը:
Նայեք հետևյալ VBA կոդը:
6267
Գործարկեք այս կոդը: Դուք կստանաք նույն հին սխալը «Օգտատիրոջ կողմից սահմանված տեսակը սահմանված չէ», ընդգծելով Բառարանային օբյեկտը : Դա պայմանավորված է նրանով, որ VBA -ը չկարողացավ ճանաչել Բառարանային օբյեկտը և այն դիտարկեց որպես օգտագործողի կողմից սահմանված փոփոխական, որը սխալմամբ չի սահմանվել:
Այժմ ամենամեծ հարցն այն է, թե ինչպե՞ս լուծել այս սխալը: Հեշտ. Այս սխալը լուծելու 2 եղանակներ կան:
⧪ Լուծում 1. Վիզուալ տուփի տեղեկատու տուփից նախադրյալ հղումը ստուգելը
Սա է այս խնդիրը լուծելու ամենախելացի միջոցը: Գնացեք Գործիքներ > Հղումներ կոճակը Visual Basic ժապավենում: Սեղմեք Հղումներ :
Կբացվի երկխոսության տուփ, որը կոչվում է Հղումներ : Ոլորեք և գտեք Microsoft Scripting Runtime (սա կախված է ձեր օգտագործած օբյեկտից: Բառարանօբյեկտը պետք է Microsoft Scripting Runtime ճանաչվի: Այսպիսով, VBA կոդում օբյեկտ օգտագործելիս դուք պետք է իմանաք դրա նախապայմանը՝ VBA-ի կողմից ճանաչվելու համար: Այցելեք այս հղումը լրացուցիչ տեղեկությունների համար): Ստուգեք այն:
Այժմ վերադարձեք և գործարկեք կոդը: Դուք ոչ մի սխալ չեք ստանա: Քանի որ VBA -ն այս անգամ կարող է ճանաչել Բառարանային օբյեկտը :
⧪ Լուծում 2. այն հայտարարելով որպես մաքուր օբյեկտ և ոչ թե հատուկ օբյեկտ
Այս խնդիրը լուծելու այլ տարբերակ կա. Դուք կարող եք օբյեկտը հայտարարել որպես մաքուր օբյեկտ, այլ ոչ թե Բառարանային օբյեկտ :
Ուշադրություն դարձրեք կոդերի հետևյալ տողերին:
5415
Այստեղ ես հայտարարել եմ MyDictionary փոփոխականը որպես պարզ օբյեկտ, ոչ թե Բառարան: Այժմ, եթե գործարկեք այս կոդը, ոչ մի սխալ չեք ստանա: