ВБА објекат потребан | Како исправити грешку потребну за објекат у програму Екцел ВБА?

Објекат потребан у програму Екцел ВБА

Грешке су саставни део кодирања, али прави геније лежи у проналажењу грешке и исправљању тих грешака. Први корак у исправљању тих грешака је интелигенција утврђивања зашто се те грешке јављају. Ако можете да утврдите зашто те грешке долазе, врло је лак посао поправити те грешке без презнојавања. Једна од таквих грешака у ВБА кодирању је „Објецт Рекуиред“.

Ако се сећате док сте учили променљиве и додељивали типове података тим променљивим, имамо и типове података „Објект“. Када је додељен тип података објекта и ако тај објекат не постоји у радном листу или радној свесци на коју упућујемо, добили бисмо поруку о грешци ВБА као "Неопходан предмет". Дакле, као нови кодер, уобичајено је у тим ситуацијама наводити панику јер почетни ниво не може пронаћи узрок ове грешке.

Зашто се јавља грешка потребна за објекат? (и ... Како то поправити?)

Ок, потребна су два или три примера да бисмо заиста разумели зашто се ова грешка јавља и како је исправити.

Овде можете преузети овај предложак Екцел-а за ВБА објекат - Предложак ВБА за објект потребан Екцел

За пример погледајте доњи код.

Шифра:

 Суб Ласт_Ров () Дим Вб Ас Воркбоок Дим Вс Ас Воркхеет Дим МиТодаи Ас Дате Сет Вб = ТхисВоркбоок Сет Вс = ТхисВоркбоок.Ворксхеетс ("Дата") Сет МиТодаи = Вб.Вс.Целлс (1, 1) МсгБок МиТодаи Енд Суб 

Да вам објасним горњи код.

Прогласио сам три променљиве, а прве две променљиве односе се на објекте „Радна свеска“ и „Радни лист“. Трећа променљива односи се на тип података „Датум“.

Када су променљиви променљиви додељени типови података „Објект“, треба да употребимо реч „Сет“ да бисмо доделили референцу објекта променљивој, тако да сам у следећа два реда помоћу кључне речи „Сет“ доделио референца „ТхисВоркбоок“ на променљиву „Вб“, јер ова променљива садржи тип података објекта као „Воркбоок“, а за променљиву „Вс“ доделио сам објект радног листа „Дата“ радног листа у овој радној свесци.

 Сет Вб = ТхисВоркбоок
 Постави Вс = ТхисВоркбоок.Ворксхеетс ("Подаци")
  • У следећем реду за променљиву типа података „Датум“ такође сам користио кључну реч „Постави“ за додељивање вредности вредности ћелије А1 у овој радној свесци (Вб) и на радном листу „Подаци“ (Вс).
 Постави МиТодаи = Вб.Вс.Целлс (1, 1)
  • У следећем реду приказујемо вредност променљиве вредности „МиДате“ ћелије А1 вредности у оквиру за поруке у ВБА.
МсгБок МиТодаи
  • Ок, покренимо овај код и видимо шта ћемо добити као резултат.

Као што видите горе, приказује поруку грешке ВБА као "Неопходан предмет". Ок, време је да испитамо зашто добијамо ову поруку о грешци.

  • На горњој слици поруке о грешци у одељку кода, док је приказивала поруку о грешци, плави бојом је означен део кода.

  • Дакле, остаје питање зашто смо добили ову грешку. Прво што треба да видимо је управо овај променљиви тип података. Вратите се на претходни ред кода где смо променљивом „МиДате“ доделили тип података.

  • Врсту података променљиве смо доделили „Датум“ и сада се враћамо на ред грешака.

У овом реду смо користили кључну реч „Сет“, док наш тип података није тип података „Објецт“. Дакле, у тренутку када ВБА код види кључну реч „Сет“, претпоставља да је то тип података објекта и каже да захтева референцу на објекат.

Дакле, доњи ред је „Сет“, а кључна реч користи се само за референцу на променљиве објекта као што су радни лист, радна свеска итд.…

Пример # 1

Сада погледајте доњи код.

Шифра:

 Суб Објецт_Рекуиред_Еррор () Ранге ("А101"). Валуе = Апплицатион1.ВорксхеетФунцтион.Сум (Ранге ("А1: А100")) Крај Суб 

У горе наведеном коду користили смо функцију радног листа „СУМ“ да бисмо добили укупне вредности ћелија од А1 до А100. Када покренете овај код, наићи ћемо на доњу грешку.

Упс !! Каже „Грешка током извођења„ 424 “: Објецт Рекуиред.

Погледајмо сада пажљиво код.

Уместо да користимо „Апплицатион“, грешком смо користили „Апплицатион1“, па је дошло до грешке „Објецт Рекуиред“ у ВБА коду.

Ако је реч „Оптион Екплицит“ омогућена, тада ћемо добити грешку „Вариабле Нот Дефинед“.

Ствари које треба запамтити

  • Објецт Рекуиред значи да референца типа података о објекту мора бити тачна.
  • Када опција експлицитна реч није омогућена у кодирању, добићемо грешку Објецт Рекуиред за погрешно написане променљиве речи, а ако је Оптион Екплицит омогућена, добићемо грешку променљиве која није дефинисана за погрешно написане променљиве речи.