Након грешке наставља се следеће: Управљање грешком у Екцел ВБА

  • Деле Ово
Hugh West

У Мицрософт Екцел ВБА, руковање грешкама је један од критичних задатака. Ако сте кодер, знате колико је важно руковање грешкама за прављење савршене апликације. Свака грешка у изјави може да омета ваш ВБА код на много начина. Дакле, морате бити опрезни да обрађујете те грешке док извршавате ВБА код. Постоји много грешака током извршавања са којима се можете суочити док користите ВБА код у Екцел-у. Да бисмо решили један од њих, користимо наредбу Он Еррор Ресуме Нект .

У овом водичу ћете научити да користите наредбу Он Еррор Ресуме Нект у Екцел-у ВБА. Овај водич ће бити на правом месту са одговарајућим примерима и одговарајућим илустрацијама. Дакле, останите са нама.

Преузмите радну свеску за вежбу

ВБА на грешку Настави Нект.клсм

Руковање грешкама у Екцел-у ВБА

Док радите са Мицрософт Екцел ВБА, суочићете се са много грешака у вашој подпроцедури. Када ВБА не може да изврши наредбу, он даје грешку током извршавања.

Екцел аутоматски решава ове грешке, тако да када се појави грешка током извршавања, приказује подразумевану поруку о грешци као што је следећа:

Сада, можете се бавити овим на различите начине помоћу неких ВБА изјава. О њима ћу расправљати у каснијим одељцима.

Прочитајте више: Како поправити #РЕФ! Грешка у Екцел-у (6 решења)

О изјавама о грешци у ВБА

Да бисмо обрадили грешке у времену извршавања, налажемо Екцелу наредбом Он Еррор. Оно одлучујегрешке НАМЕ у Екцел-у (10 примера)

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

✎ При грешци Настави даље не исправља грешке. У основи игнорише грешку и прелази на следећу наредбу.

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

Можете искључити Он Еррор Ресуме Нект наредбу у вашем ВБА коду у Екцел-у додавањем изјаве Он Еррор ГоТо 0 .

Закључак

Да закључимо, надам се да вам је овај водич пружио део корисног знање за коришћење Настави након грешке при грешци у Екцел ВБА. Препоручујем вам да научите и примените сва ова упутства на свој скуп података. Преузмите радну свеску за вежбање и испробајте их сами. Такође, слободно дајте повратне информације у одељку за коментаре. Ваше драгоцене повратне информације нас мотивишу да креирамо овакве туторијале.

Не заборавите да проверите нашу веб локацију Екцелдеми.цом за различите проблеме и решења у вези са Екцел-ом.

Наставите да учите нове методе и наставите да растете!

какве операције желимо одмах да урадимо. У основи, онемогућавамо ове грешке овим врстама руковања грешкама.

Користимо три врсте изјава (синтаксе) Он Еррор у Екцел ВБА.

  • При грешци Иди на ред
  • При грешци настави даље
  • При грешци Иди на 0

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

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

Ако процес позива има омогућен руковалац грешкама, он се покреће да управља грешком. Ако је руковалац грешкама вашег система позива одговарајуће укључен, контрола се враћа преко ранијих процедура позивања све док не пронађе омогућен, али неактиван руковалац грешкама. Ако не може да пронађе ниједан руковалац грешкама у стању мировања, то значи да је грешка катастрофална у тренутку када се појави.

Сваки пут када руковалац грешкама врати овлашћење процедури која позива, та процедура развија постојећу процедуру. Извршење се поново покреће уприсутна процедура у тренутку изабраном наредбом Ресуме када руковалац грешкама обрађује грешке у било којој процедури.

'При грешци настави даље' у ВБА

Сада, <Наредба 1>Он Еррор Ресуме Нект каже ВБА да игнорише све редове кода који имају грешке и да одмах пређе на следећи ред кода. Након тога, Екцел ВБА кодови ће прескочити ред или редове који садрже грешке у себи и прећи на следећи низ кода.

Наредба Он Еррор Ресуме Нект присиљава имплементацију на наставите са командом одмах пратећи линију кодова која је изазвала грешку током извођења. Ова изјава дозвољава прескакање извршења чак и ако постоји грешка у току извођења. Ако мислите да одређена линија кода може да произведе грешку, поставите рутину за руковање грешкама тамо уместо да је стављате на другу локацију у оквиру процедуре. Наредба Он Еррор Ресуме Нект постаје неактивна када ваш код позове другу процедуру. Дакле, када вам треба усклађено руковање грешкама у тој рутини, морате да покренете команду Он Еррор Ресуме Нект у сваком именованом шаблону.

Разумно је када линија кода коју сте може прескочити није неопходно за успешно покретање макроа. Али запамтите, може бити штетно ако га користите погрешно јер може дати нежељене резултате.

Запамтите:

Укључено Еррор Ресуме Нект изјава не радипоправите грешке у току рада. У основи игнорише грешке у којима ће се ваше ВБ извршавање наставити из наредбе која је генерисала грешку током извршавања.

Погледајте следећи код:

8482

Покушали смо да поделимо 5 са 0 и 1. Покренимо код. Приказаће следећи излаз:

Производи грешку током извођења. Не можемо да поделимо број са 0. Када отклоните грешке у коду, видећете следеће:

Када ВБ програм пронађе грешку, одмах зауставља процедуру. Не извршава следећу линију.

Сада применимо наредбу Он Еррор Ресуме Нект пре изјаве о грешци:

1347

Након покретања кода, ви ћете погледајте следеће:

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

Примери 'Он Еррор Ресуме Нект' у ВБА

У У следећим одељцима, пружићу вам два примера изјаве Он Еррор Ресуме Нект коју можете да имплементирате у свој Екцел радни лист користећи ВБА. Препоручујем вам да научите и примените све ово у својој радној свесци. Дефинитивно ће повећати ваше знање о Екцел-у.

1. Изјава „Он Еррор Ресуме Нект“ за сакривање радних листова

Сада ћу вам у овом примеру показати ВБА код којиће сакрити све радне листове ваше активне радне свеске.

Погледајте следећи снимак екрана:

Овде имамо четири радна листа. Све ћемо их сакрити коришћењем следећег ВБА кода:

4063

Када извршите следећи код, видећете следећу грешку током извршавања:

Екцел приказује ову грешку јер не можете сакрити све листове у радној свесци. Дакле, морате игнорисати грешку. Да бисте то урадили, морате да имплементирате наредбу Он Еррор Ресуме Нект у свом реду кода.

8653

Након што завршите извршавање ВБА кода, видећете следећи излаз:

На крају, нећете видети грешке након извршења. Дакле, наша изјава Он Еррор Ресуме Нект је заиста добро функционисала у ВБА коду.

Прочитајте више: Грешке у Екцел-у и њихово значење (15 различитих грешака)

2. Функција ВЛООКУП са 'Он Еррор Ресуме Нект' у ВБА

У овом примеру ћу показати пример функције ВЛООКУП у ВБА . Сада, овај ВБА код такође укључује наредбу Он Еррор Ресуме Нект .

Погледајте следећи снимак екрана:

Овде , можете видети имена неких људи и њихове године. У суседној табели користићемо ВЛООКУП да бисмо пронашли име и године особе.

Укуцајте следећи код да бисте то урадили:

8007

Сада покрените макро . Видећете следећу грешку:

Сада, ово је време извођењагрешка. Зашто се то дешава? Погледајте поново скуп података:

Као што видите, нема података за „Аарон“ и „Емма“. Зато извршава само ВЛООКУП за први унос. Након тога, зауставља извршење. Сада, ако желите да игноришете грешку и да наставите да пронађете остатак узраста, користите наредбу При грешци настави следеће .

2380

Након покретања ВБА кода, видећете следећи излаз:

Као што видите, применом команде При грешци настави даље , игнорисали смо грешку и пронашли остале особе старости. Наш ВБА код није пронашао никакве податке о Арону и Емми. Због тога је игнорисао те вредности и вратио преостале вредности у Екцел радном листу.

Прочитајте више: [Поправљено] Екцел је пронашао проблем са једном или више референци формуле на овом радном листу

Искључите 'Он Еррор Ресуме Нект' са Екцел ВБА

Сада сте можда у ситуацији да желите да игноришете грешке за одређени сегмент ВБА кода. Запамтите, ако користите наредбу Он Еррор Ресуме Нект у ВБА коду, она ће прескочити све грешке након тога. Сада, ако желите да то искључите и омогућите руковање грешкама за други сегмент, користите Он Еррор ГоТо 0 . Поново ће омогућити руковање грешкама.

Општа употреба:

Суб еррор_хандлинг()

За игнорисање грешака

У случају грешке настави даље

// редови кодова

Доукључите Руковање грешкама

Укључено Еррор ГоТо 0

//линије кодова

Крај под

Погледајте следећи ВБА код:

6229

Раније смо користили код за функцију ВЛООКУП . Овде је додат додатни део кода да вам покажем. Наш код ће игнорисати грешке док изводи ВЛООКУП , али ће активирати руковање грешкама након Он Еррор ГоТо 0 изјаве.

Прочитајте више: Екцел ВБА: Искључите “Он Еррор Ресуме Нект”

ВБА 'Он Еррор ГоТо'

Претходно сам расправљао руковање грешкама помоћу методе Он Еррор. Цео наш чланак је био о Настави са грешком. Сада, такође постоје две врсте руковања грешкама о којима ћу говорити у следећим одељцима.

1. ВБА при грешци Иди на 0

у грешци Иди на 0 изјава је уграђена поставка Екцел-а ако ваши кодови немају руковалац грешкама у себи. То у основи подразумева да када ВБА пронађе грешку са Он Еррор ГоТо 0 , он ће зауставити покретање кода и приказати свој традиционални оквир са поруком о грешци.

Он Еррор ГоТо 0 израз у основи искључује руковање грешкама у овој процедури. Не дефинише ред 0 као почетак кода за руковање грешкама, чак и ако метода укључује ред са бројем 0.

Погледајте следећи код:

9545

Имамо већ вам је показао овај код. Овај код у основи сакрива све радне листовеу вашој тренутној радној свесци. Сада, заиста имам додатни део кода са Он Еррор ГоТо 0 да покажем грешку. Ако покренете код, видећете следеће:

Показује ову грешку јер не можемо да имамо листове са истим именом у активној радној свесци.

2. ВБА при грешци ГоТо ред

Сада такође можете упутити Екцел да покрене други сегмент кода ако пронађе било какву грешку користећи Он Еррор ГоТо ред . Каже Екцел-у да изврши нешто након што пронађе грешку.

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

Погледајте следећи код:

5185

Видели сте код у претходном примеру. Када смо користили Он Еррор ГоТо 0 , то је изазвало грешку. Али, овде смо то заменили наредбом Он Еррор ГоТо лине .

Сада покрените код и видећете следеће:

Као што видите, не приказује нам стандардни дијалог о грешци. Уместо тога, приказује прилагођени оквир за поруке који смо креирали у сегменту еррор_хандлер . Када Екцел пронађе било какву грешку, скаче на сегмент еррор_хандлер и показује нам оквир за поруку.

Такође смо користили Излазни под у процедури.Ако нема листа под називом „ ВЛООКУП “, наш ВБА код ће преименовати активни лист. Затим, овде морамо да завршимо извршење јер не морамо да прелазимо на обрађивач грешака и да прикажемо оквир са поруком.

ВБА 'Он Еррор' не ради у Екцел-у

Понекад, без обзира колико се трудили, метода Он Еррор неће радити. Раније смо имплементирали метод Он Еррор за обраду грешака. Али, понекад ће приказати грешке чак и ако користите При грешци настави даље или У случају грешке Иди на 0 . Можда постоји неколико разлога у вашем коду које морате да поправите. Нећу вам то показати.

Основни разлог зашто ВБА „ Он Еррор“ не ради у Екцел-у је укључивање опције „Прекини све грешке“ у Екцел-у.

Пратите ове кораке да бисте то решили:

📌 Кораци

  • Прво притисните Алт+Ф11 на тастатури да бисте отворите ВБА едитор.
  • Сада кликните на Алатке &гт; Опције.

  • Након тога кликните на картицу Опште у дијалогу Опције поље.

  • Овде можете видети да је „ Прекини све грешке “ већ означено. У основи вас спречава да рукујете грешкама.
  • Да бисте је променили, изаберите опцију „ Прекини на необрађене грешке ” и кликните на ОК .

Надам се да ће решити ваш проблем да ВБА „Он Еррор“ не ради у Екцел-у.

Прочитајте више: Разлози и исправке

Хју Вест је веома искусан Екцел тренер и аналитичар са више од 10 година искуства у индустрији. Дипломирао је рачуноводство и финансије и магистрирао пословну администрацију. Хју има страст према подучавању и развио је јединствен приступ подучавању који је лако пратити и разумети. Његово стручно знање о Екцел-у помогло је хиљадама студената и професионалаца широм света да унапреде своје вештине и постану успешни у каријери. Кроз свој блог, Хју дели своје знање са светом, нудећи бесплатне Екцел туторијале и онлајн обуку како би помогли појединцима и предузећима да остваре свој пуни потенцијал.