Можда ћете наићи на неке проблеме са својим ВБА кодом, али како ћете пронаћи проблем? Понекад ће вашем ВБА коду можда требати отклањање грешака. Наставите да читате да бисте открили четири најчешће методе за отклањање грешака у Екцел ВБА коду:
-
Испитивање кода
-
Уметање МсгБок функција на различите локације у вашем коду
-
Уметање наредби Дебуг.Принт
-
Коришћење алата за отклањање грешака уграђених у Екцел
Испитивање вашег кода
Можда је најједноставнија техника отклањања грешака једноставно пажљиво погледати ваш код да видите да ли можете пронаћи проблем. Овај метод, наравно, захтева знање и искуство. Другим речима, морате да знате шта радите. Ако имате среће, грешка одмах искочи, а ви се лупите по челу и кажете: „Д'ох!“ Када се бол у челу смањи, можете решити проблем.
Обратите пажњу на употребу речи „Ако будете имали среће“. То је зато што често откријете грешке када радите на свом програму осам сати узастопно, 2 је ујутро, а ви радите на кофеину и снази воље. У таквим тренуцима имате среће ако чак можете да видите свој код, а камоли да пронађете грешке. Стога, немојте се изненадити ако једноставно испитивање вашег кода није довољно да бисте пронашли и избрисали све грешке које садржи.
Коришћење функције МсгБок
Уобичајени проблем у многим програмима укључује једну или више варијабли које не преузимају вредности које очекујете. У таквим случајевима, праћење променљиве(а) док се ваш код покреће је корисна техника за отклањање грешака. Један од начина да то урадите је уметање привремених МсгБок функција у вашу рутину. На пример, ако имате променљиву под називом ЦеллЦоунт, можете уметнути следећу изјаву:
МсгБок ЦеллЦоунт
Када извршите рутину, функција МсгБок приказује вредност ЦеллЦоунт-а.
Често је корисно приказати вредности две или више променљивих у оквиру за поруке. Следећа изјава приказује тренутну вредност две променљиве: ЛоопИндек (1) и ЦеллЦоунт (72), одвојене размаком.
МсгБок ЛоопИндек & “ “ & ЦеллЦоунт
Приметите да су две променљиве комбиноване са оператором конкатенације (&) и уметнути размак између њих. У супротном, оквир са поруком повезује две вредности, чинећи да изгледају као једна вредност. Такође можете користити уграђену константу, вбНевЛине, уместо знака за размак. вбНевЛине умеће прелом за улазак у ред, који приказује текст у новом реду. Следећа изјава приказује три променљиве, свака у посебном реду:
Коришћење оквира за поруке за приказ вредности три променљиве.
МсгБок ЛоопИндек & вбНевЛине & ЦеллЦоунт & вбНевЛине & МиВал
Ова техника није ограничена на праћење варијабли. Можете користити оквир за поруке да прикажете све врсте корисних информација док је ваш код покренут. На пример, ако ваш код прође кроз низ листова, следећа изјава приказује име и тип активног листа:
МсгБок АцтивеСхеет.Наме & “ “ & ТипеНаме (АцтивеСхеет)
Ако ваш оквир за поруку покаже нешто неочекивано, притисните Цтрл+Бреак и видећете оквир за дијалог који вам говори да је извршење кода прекинуто, имате четири избора:
-
Кликните на дугме Настави. Код наставља да се извршава.
-
Кликните на дугме Крај. Извршење се зауставља.
-
Кликните на дугме Отклањање грешака. ВБЕ прелази у режим за отклањање грешака.
-
Кликните на дугме Помоћ. Екран помоћи вам говори да сте притиснули Цтрл+Бреак. Другим речима, није од велике помоћи.
Притисак на Цтрл+Бреак зауставља извршавање вашег кода и даје вам неке могућности избора.
Ако ваша тастатура нема тастер Бреак, покушајте да притиснете Цтрл+СцроллЛоцк.
Слободно користите МсгБок функције често када отклањате грешке у свом коду. Само се побрините да их уклоните након што идентификујете и решите проблем.
Уметање наредби Дебуг.Принт
Као алтернативу коришћењу МсгБок функција у вашем коду, можете уметнути једну или више привремених изјава Дебуг.Принт. Користите ове изјаве да одштампате вредност једне или више променљивих у прозору Иммедиате. Ево примера који приказује вредности три променљиве:
Дебуг.Принт ЛоопИндек, ЦеллЦоунт, МиВал
Обратите пажњу да су варијабле одвојене зарезима. Можете приказати онолико променљивих колико желите помоћу једне изјаве Дебуг.Принт.
Дебуг.Принт шаље излаз у прозор Иммедиате чак и ако је тај прозор скривен. Ако ВБЕ-ов Иммедиате прозор није видљив, притисните Цтрл+Г (или изаберите Виев → Иммедиате Виндов). Ево неких излаза у прозору Иммедиате.
Наредба Дебуг.Принт шаље излаз у прозор Иммедиате.
За разлику од МсгБок-а, изјаве Дебуг.Принт не заустављају ваш код. Дакле, морате да пазите на прозор Иммедиате да бисте видели шта се дешава.
Након што отклоните грешке у коду, обавезно уклоните све изјаве Дебуг.Принт. Чак и велике компаније као што је Мицрософт повремено забораве да уклоне своје изјаве Дебуг.Принт. У неколико претходних верзија Екцел-а, сваки пут када се отвори програмски додатак Аналисис ТоолПак, видели бисте неколико чудних порука у прозору Иммедиате. Тај проблем је коначно решен у програму Екцел 2007.
Коришћење ВБА програма за отклањање грешака
Дизајнери Екцел-а су блиско упознати са концептом грешака. Сходно томе, Екцел укључује скуп алата за отклањање грешака који вам могу помоћи да исправите проблеме у вашем ВБА коду.