У ВБА -у можете изаћи из под -функције или функције помоћу Екит Суб или Излазна функција команде.
1 | Екит Суб |
1 | Излазна функција |
Када дође до извршења кода Екит Суб или Излазна функција, изаћи ће из Суб или Функције и наставити са било којим другим извршавањем кода.
Ако желите да научите како да изађете из Суб -а на грешци, кликните на ову везу: ВБА Он Еррор Екит Суб
Ако желите да научите како да окончате извршавање читавог кода, кликните на ову везу: ВБА Енд
Изађите из Суб у ВБА
На примеру ћете видети шта се дешава када користимо Екит Суб команду у подморници. Направили смо подморницу ЕкитСуб, који има Екит Суб команда изнутра. СубЦаллЕкитСуб зове овај Суб. Ево кода:
123456789101112131415161718 | Приватни под ЕкитСуб ()Дим и Ас ИнтегерЗа и = 1 до 10Ако је и = 5 Тада јеЕкит СубМсгБок "Вредност и је" & иКрај АкоЗатим самЕнд СубПриватни помоћни позивЕкитСуб ()Позовите ЕкитСубМсгБок „Излаз из претплате“Енд Суб |
У ЕкитСуб, прво улазимо у Фор Лооп ако је вредност и мања од 10:
123 | За и = 1 до 10Затим сам |
Након тога помоћу наредбе Иф проверавамо да ли је вредност и једнака 5. Ако је вредност 5, желимо да напустимо Суб и вратимо оквир за поруку са вредношћу и:
1234 | Ако је и = 5 Тада јеЕкит СубМсгБок "Вредност и је" & иКрај Ако |
Ако услов није испуњен, следећи исказ повећава и за 1 и поново улази у Фор петљу:
1 | Затим сам |
У ЦаллЕкитСуб, прво зовемо Суб ЕкитСуб:
1 | Позовите ЕкитСуб |
Након тога враћамо оквир за поруку:
1 | МсгБок „Излаз из претплате“ |
Ако покренете ЦаллЕкитСуб, прво ће позвати ЕкитСуб. Ако извршите овај код у режиму отклањања грешака, видећете да ће проћи петљу 5 пута. У 5тх итерација, вредност променљиве и постаје 5 и код улази у Иф тело. Сада Суб ЕкитСуб излази и враћа се у ЦаллЕкитСуб. Следећи ред је МсгБок „Излаз из претплате“:
Као што видите, ЕкитСуб напушта се одмах након тога Екит Суб команда, па се МсгБок „Вредност и је“ & и никада неће бити извршена.
Изађите из функције у ВБА
Излазак из функције у ВБА је сличан изласку из Суб -а, само је наредба Излазна функција. У примеру смо креирали ЕкитФунц који враћа цео број. Суб ЦаллЕкитФунцтион позива ову функцију. Ево кода:
1234567891011121314151617181920 | Приватна функција ЕкитФунц () Као цео бројДим и Ас ИнтегерЗа и = 1 до 10Ако је и = 5 Тада јеЕкитФунц = иИзлазна функцијаКрај АкоЗатим самЗавршна функцијаПриватни помоћни позивЕкитФунцтион ()Дим интФунц као цео бројинтФунц = ЕкитФунцтион ()МсгБок "Вредност интФунц је" & интФунцЕнд Суб |
У ЕкитФунц, прво улазимо у Фор Лооп ако је вредност и мања од 10:
123 | За и = 1 до 10Затим сам |
Након тога помоћу наредбе Иф проверавамо да ли је вредност и једнака 5. Ако је вредност 5, додељујемо вредност и резултату функције и излазимо из функције:
1234 | Ако је и = 5 Тада јеЕкитФунц = иИзлазна функцијаКрај Ако |
Ако услов није испуњен, следећи исказ повећава и за 1 и поново улази у Фор петљу:
1 | Затим сам |
У ЦаллЕкитФунцтион, прво зовемо функцију ЕкитФунц: Да бисмо то урадили, морамо прогласити променљиву интФунц откуцајте цео број и доделите резултат ЕкитФунц функција за то:
123 | Дим интФунц као цео бројинтФунц = ЕкитФунцтион () |
Након тога враћамо оквир за поруку са вредношћу интФунц:
1 | МсгБок "Вредност интФунц је" & интФунц |
Ако покренете ЦаллЕкитФунцтион, прво ће позвати функцију ЕкитФунц. Ако извршите овај код у режиму отклањања грешака, видећете да ће проћи петљу 5 пута. У 5тх итерација, вредност променљиве и постаје 5 и код улази у Иф тело. Сада је вредност ЕкитФунц постаје и и функција се напушта и враћа у ЦаллЕкитФунцтион. Следећи ред је МсгБок „Вредност интФунц -а је“ & интФунц: