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

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

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

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

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

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

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

Шифра:

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

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

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

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

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

Као што видите горе, приказује поруку о грешци ВБА као „Објецт Рекуиред“. Ок, време је да испитамо зашто добијамо ову поруку о грешци.

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

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

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

Пример # 1

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

Шифра:

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

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

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

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

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

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

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

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

Занимљиви Чланци...