ВБА о изјавама о грешкама | Три најбоља начина за решавање грешака
Изјава о грешци у програму Екцел ВБА
ВБА о грешци Изјава је врста механизма за руковање грешкама који се користи за вођење кода да ради шта ако наиђе на било коју врсту грешке, обично када код наиђе на грешку извршење се зауставља, али са овом наредбом у коду извршење кода се наставља као има сет упутстава која треба да уради када наиђе на грешку.
Предвиђање грешке у коду чини вас професионалцем у ВБА кодирању. Не можете да учините код 100% ефикасним, чак и ако сте сигурни да ваш код на један или други начин може да створи грешку.
Готово је немогућ задатак идентификовати и решити сваку врсту грешке, али у ВБА имамо различите начине за решавање грешака. Током писања кода можда нећете претпоставити да ће се врста грешке појавити, али ако дође до грешке, потрошићете више времена на отклањање грешака него на писање самог кода.
Шта је грешка?
Грешка није ништа друго до што се линија кода не може извршити због функционалности или погрешног кода. Зато покушајте да предвидете грешку и да је решите.
На пример, ако покушате да избришете лист који није ту, очигледно не можемо извршити ту линију кода.
Грешка је три типа, грешка је у компајлирању због непријављених променљивих. Друга је грешка при уносу података због погрешних уноса кодера, а трећа је грешка у времену извођења због тога што ВБА не може препознати линију кода. За покушај приступа или обраде радног листа или радне свеске који нису тамо.
Али у ВБА имамо изјаву за руковање свим овим врстама грешака, тј. Изјаву „О грешци“.
Врсте изјава о грешкама
Кључна тачка руковања грешкама у ВБА је изјава „На грешци“. На пример, о грешци „настави следећи ред“, „иди или пређи на други ред“ итд.
Изјава о грешци садржи три врсте изјава.
- ГоТо 0значи кад год се догоди грешка у времену извођења екцел или ВБА треба да прикаже оквир са поруком о грешци у коме се каже врста грешке на коју је наишла. Чим ВБА изврши код, онемогућава све руковаоце грешкама у том одређеном блоку на коду.
- Настави даље значи кад год дође до грешке, ова изјава налаже Екцелу да игнорише ту грешку и пређе на (наставак следећег) следећи ред кода без приказивања порука о грешци. То не значи да ће исправити грешку, већ само игнорише грешку.
- Иди [ознака] значи кад год ВБА наиђе на грешку, пређите на додељену ознаку. То чини да код скочи на одређену линију коју даје кодер.
Три најбоља начина за решавање грешака у ВБА
Овај ВБА о предлошку грешке можете преузети овде - ВБА о предлошку грешке# 1 - На грешци Настави даље
Претпоставимо да вредност 20 делите са 0 и прогласили сте променљиву да бисте јој доделили резултат дељења.
Шифра:
Суб ОнЕррор_Екампле1 () Дим и Ас Интегер и = 20/0 Енд Суб
Ако покренете овај код, бациће доњу грешку.
Дакле, не можете поделити ниједан број са нултом вредношћу. Број грешке у времену извођења је 11, тј. Подељено са нулом.
Сада ћу додати још један ред у код.
Шифра:
Суб ОнЕррор_Екампле1 () Дим и Ас Интегер, ј Ас Интегер и = 20/0 ј = 20/2 Енд Суб
Сада ћу додати изјаву о наставку грешке, следећу на врху.
Шифра:
Суб ОнЕррор_Екампле1 () Дим и Ас Интегер, ј Ас Интегер Он Еррор Ресуме Нект и = 20/0 ј = 20/2 Енд Суб
Сада, ако извршим овај код, неће ми дати поруке о грешкама, већ ће извршити следећи ред кода, тј. Ј = 20/2.
# 2 - Ознака грешке ГоТо
Прогласио сам три променљиве.
Шифра:
Суб ОнЕррор_Екампле1 () Дим и Ас Интегер, ј Ас Интегер, к Ас Интегер
За све ове три променљиве задаћу израчунавање дељења.
Шифра:
Суб ОнЕррор_Екампле1 () Дим и Као целобројно, ј Као целобројно, к Као целобројно и = 20/0 ј = 20/2 к = 10/5
Резултат сва ова три израчунавања биће приказан у оквиру за поруку.
Шифра:
Суб ОнЕррор_Екампле1 () Дим и Као целобројно, ј Као целобројно, к Као целобројно и = 20/0 ј = 20/2 к = 10/5 МсгБок "Вредност и је" & и & вбНевЛине & "Вредност ј је "& ј & _ вбНевЛине &" Вредност к је "& к & вбНевЛине Енд Суб
Сада ћу покушати да извршим овај код, јер израчун „И“ није исправан, добићемо грешку у времену извођења 11.
Сада ћу додати изјаву „Он Еррор Ресуме Нект“.
Шифра:
Суб ОнЕррор_Екампле1 () Дим и као целобројно, ј као целобројно, к као целобројно при грешци Настави даље и = 20/0 ј = 20/2 к = 10/5 МсгБок "Вредност и је" & и & вбНевЛине & "Тхе вредност ј је "& ј & _ вбНевЛине &" Вредност к је "& к & вбНевЛине Енд Суб
Ако извршим ово, прескочит ће израчун „И“ и извршити преостала два израчунавања, а резултат је сљедећи.
Сада ћу уместо „Он Еррор Ресуме Нект“ додати „Он Еррор ГоТо КЦалцулатион“
Шифра:
Суб ОнЕррор_Екампле1 () Дим и као целобројно, ј као целобројно, к као целобројно при грешци Иди на КИзрачун: и = 20/0 ј = 20/2 КИзрачун: к = 10/5 МсгБок "Вредност и је" & и & вбНевЛине & "Вредност ј је" & ј & _ вбНевЛине & "Вредност к је" & к & вбНевЛине Енд СубБелешка: Овде је „КЦалцулатион“ име етикете коју сам дао, можете дати своје име етикете без размака.
Сада ако извршим овај ред кода, он неће скочити на следећи ред, него на име ознаке које сам унео, тј. „КЦалцуалтион“. Овде ће занемарити грешку коју даје „И“, а такође неће извршити израчун „ј“, већ ће одмах скочити на „КЦалцуалтион“.
# 3 - Испис броја грешке у ВБА
На крају кода, такође можемо одштампати број грешке у засебном оквиру за поруке. Следећи ред кода ће обавити овај посао.
Шифра:
Ерр.Нумбер
Сада ћу покренути овај код, прво поље са поруком ће показати резултате прорачуна.
Кликните на дугме У реду, приказаће се још једно поље за приказ броја грешке.
Идемо 11 као резултат, тј. Дељење по нули.
Уместо броја можемо добити и опис грешке. Само треба да променимо код, доле је код.
Шифра:
Ерр.Десцриптион
Приказаће се овакав опис.
Ствари које треба запамтити
- Након уноса „Он Еррор Ресуме Нект“ на крају кода, не заборавите да додате изјаву „Он Еррор ГоТо 0“
- Име етикете би требало да буде исто на оба места.
- Имена етикета не морају бити унапред дефинисана.
- На крају, увек погледајте кроз шта је дошло до грешке у засебном оквиру за поруке.