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

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

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

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

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

Примери

Пример # 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). Вредност Следеће к ЕррорХандлер: МсгБок " Дошло је до грешке, а грешка је: "& вбНевЛине & Ерр.Десцриптион Екит Суб Енд Суб

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

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

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