ВБА Екит Суб | Изађите из ВБА потпроцедуре ако услови нису испуњени

Екцел ВБА Екит Потпроцедура

Излаз из под наредба излази из потпроцедуре раније од дефинисаних редова ВБА кодова. Међутим, да бисмо изашли из потпроцедуре, морамо применити неку врсту логичког теста.

Конструишимо ово на једноставан начин.

 Суб МацроНаме () '...' Овде је неки код '... Изађи из Суб' Изађи из Суб-а без извршавања даљих редова кода испод '...' Овај код ће се занемарити '... Крај Суб 

Примери

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

Пример # 1

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

Шифра:

 Суб Излаз_Пример1 () Дим к Колико дуго је к = 1 до 10 ћелија (к, 1) .Вредност = к Следећи к Крај Суб 

Горњи код ће уметнути серијске бројеве од 1 до 10 у ћелије А1 до А10.

Сада желим да убацим само 5 серијских бројева и чим вредност променљиве „к“ постане 6, желим да изађем из под.

За ово ћу морати да додам логички тест у екцел ас АКО је к = 6 Затим изађите из под.

Шифра:

 Суб Екит_Екампле1 () Дим к Колико дуго траје к = 1 до 10 Ако је к = 6 Затим изађите из Суб 'Чим к вредност постане 6, занемарит ће све кодове и изаћи из ћелија (к, 1). Вриједност = к Сљедећи к Крај Суб 

Сада покрените код ред по ред. Притисните тастер Ф8 да бисте започели поступак.

Од сада је вредност к нула.

Да бисте променили вредност к на 1, притисните тастер Ф8 још једном.

Дакле, к вредност је 1, наш код наставља да ради и убациће 1 у ћелију А1. Овако наставите да изводите петљу док вредност к не постане 6.

Сада је вредност к 6 и линија кода ће ускоро извршити наш логички тест за излазак из потпроцедуре. Ако притиснем тастер Ф8 још једном, одмах ћу изаћи из целокупног потпроцедура.

Као што видимо, истакла је реч „Екит Суб“. Притиском на тастер Ф8 изаћи ће из потпроцедуре без преласка на реч „Енд Суб“.

Пример # 2 - У случају грешке Изађите из потпроцедуре

Такође можемо изаћи из потпроцедуре када добијемо вредности грешке. На пример, размотрите доленаведене податке о подели броја1 од броја 2.

Испод је код за добијање подјеле два броја.

Шифра:

 Суб Излаз_Пример2 () Дим к Колико дуго траје к = 2 до 9 ћелија (к, 3) .Вредност = Ћелије (к, 1) .Вредност / ћелије (к, 2) .Вредност Следећа к Крај Суб 

Као што знамо, ниједан број не можемо поделити са нулом. Дакле, ако покушамо то да урадимо, добићемо грешку као Грешка у времену извођења ‘11’: Дивисион Би Зеро.

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

Шифра:

 Суб Екит_Екампле2 () Дим к Колико дуго ће трајати к = 2 до 9 На грешци Иди на ЕррорХандлер Целлс (к, 3) .Валуе = Целлс (к, 1) .Валуе / Целлс (к, 2) .Валуе Нект к ЕррорХандлер: Екит Суб Енд Суб 

У горе наведеном примеру споменуо сам изјаву „О грешци пређи на ЕррорХандлер“. Овде је реч ЕррорХандлер ознака коју сам доделио. Ако видите на дну кода, ознаку сам споменуо као

ЕррорХандлер: Изађи из под 

Дакле, чим код наиђе на грешку, он ће гурнути код да скочи на налепницу и налепница има изјаву „Екит Суб“ (Излаз из под), па ће изаћи из потпроцедуре.

Сада ћу покренути код, израчунаваће поделу док не нађе грешку.

Као што видите у ћелији Ц7, наишла је на грешку као „Подељено нулом“, па је изашла из потпроцедуре. Без обавештавања корисника који излази из потпроцедуре увек је опасна ствар. Да бисмо обавестили корисника о грешци, можемо укључити један мали оквир за поруку.

Шифра:

 Суб Екит_Екампле2 () Дим к Колико дуго ће трајати к = 2 до 9 На грешци Иди на ћелије са ЕррорХандлер (к, 3) .Валуе = Ћелије (к, 1) .Вредност / ћелије (к, 2). Вредност Следеће к ЕррорХандлер: МсгБок " Дошло је до грешке, а грешка је: "& вбНевЛине & Ерр.Десцриптион Екит Суб Енд Суб 

Горњи код ће приказати поруку о грешци, а затим изаћи из потпроцедуре. Током извођења кода, ако дође до грешке, приказаће се оквир за поруке у ВБА као доле.

Ово је поузданији начин изласка из потпроцедуре.