Петље у ВБА

Постоје ситуације када је од ВБА програма потребно да изврши исти скуп радњи неколико пута заредом (то јест, понови исти блок кода неколико пута). Ово се може урадити помоћу ВБА петљи.

ВБА петље укључују:

Затим ћемо детаљније погледати сваки од ових циклуса.

За оператор петље у Висуал Басицу

Структура оператора петље у Висуал Басиц-у може бити организован у једном од два облика: као петља За… Следеће или као петља За сваки.

Циклус „За … Следећи“

Циклус За… Следеће користи променљиву која секвенцијално узима вредности из датог опсега. Са сваком променом вредности променљиве, извршавају се радње које су затворене у телу циклуса. Ово је лако разумети из једноставног примера:

За и = 1 до 10 Укупно = Укупно + иМасив(и) Следећи и

У овој једноставној петљи За… Следеће користи се променљива i, који секвенцијално узима вредности 1, 2, 3, … 10, а за сваку од ових вредности се извршава ВБА код унутар петље. Дакле, ова петља сабира елементе низа. иАрраи у променљивој укупан.

У горњем примеру, инкремент петље није наведен, тако да се повећава променљива i од 1 до 10, подразумевано је повећање 1… Међутим, у неким случајевима је потребно користити различите вредности прираштаја за петљу. Ово се може урадити помоћу кључне речи Кораккао што је приказано у следећем једноставном примеру.

За д = 0 до 10 Корак 0.1 дУкупно = дУкупно + д Следећи д

Пошто је у горњем примеру корак инкремента постављен једнак 0.1, затим променљива дТотал за свако понављање циклуса поприма вредности 0.0, 0.1, 0.2, 0.3,… 9.9, 10.0.

Да бисте одредили корак петље у ВБА, можете користити негативну вредност, на пример, овако:

За и = 10 до 1 корак -1 иАрраи(и) = и Следећи и

Овде је прираст -1, дакле променљива i са сваким понављањем циклуса поприма вредности 10, 9, 8, … 1.

Петља „За сваки“

Циклус За сваки слично циклусу За… Следеће, али уместо понављања низа вредности за променљиву бројача, петља За сваки врши скуп радњи за сваки објекат у наведеној групи објеката. У следећем примеру, користећи петљу За сваки набраја све листове у тренутној Екцел радној свесци:

Дим вСхеет као радни лист за сваки вСхеет у радним листовима МсгБок "Најден лист: " & вСхеет.Наме Нект вСхеет

Изјава о прекиду петље „Изађи за“

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

Апликација оператера Изађи за приказано у следећем примеру. Овде петља понавља преко 100 уноса низа и сваки упоређује са вредношћу променљиве дВал… Ако се пронађе подударање, онда се петља прекида:

За и = 1 до 100 Ако је дВалуес(и) = дВал Онда ИндекВал = и Изађи За Крај Ако Следеће и

Петља До Вхиле у Висуал Басиц-у

Циклус Уради док извршава блок кода све док је наведени услов испуњен. Следи пример процедуре Под, у којој се помоћу петље Уради док Фибоначијеви бројеви који не прелазе 1000 се приказују узастопно:

'Суб процедура даје Фибоначијеве бројеве који не прелазе 1000 Суб Фибонацци() Дим и Ас Интегер 'бројач за означавање позиције елемента у низу Дим иФиб Ас Интегер 'чува тренутну вредност низа Дим иФиб_Нект Ас Интегер 'похрањује следећу вредност секвенце Дим иСтеп Ас Интегер 'похрањује величину следећег инкремента 'иницијализујте променљиве и и иФиб_Нект и = 1 иФиб_Нект = 0 'До Вхиле петља ће се извршавати све док вредност 'тренутног Фибоначијевог броја не буде већа од 1000 До Вхиле иФиб_Нект1000 Иф < и 1 Затим 'посебан случај за први елемент иСтеп = 1 иФиб = 0 Иначе 'сачувајте величину следећег инкремента пре него што препишете 'тренутну вредност низа иСтеп = иФиб иФиб = иФиб_Нект Енд Иф 'исписати тренутни Фибоначијев број у колони А од активни радни лист 'у реду са индексом и Ћелије(и , 1).Валуе = иФиб 'израчунајте следећи Фибоначијев број и повећајте индекс позиције елемента за 1 иФиб_Нект = иФиб + иСтеп и = и + 1 Лооп Енд Суб

У датом примеру услов иФиб_Нект < 1000 проверено на почетку петље. Према томе, ако је прва вредност иФиб_Нект Да их има више од 1000, онда се петља никада не би извршила.

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

Шематски, такав циклус Уради док са условом који треба проверити на крају ће изгледати овако:

Урадите ... Петља док је иФиб_Нект < 1000

Цикл «До Унтил» в Висуал Басиц

Циклус До Унтил веома сличан циклусу Уради док: блок кода у телу петље се извршава изнова и изнова док се не испуни наведени услов (резултат условног израза је Прави). У наредном поступку Под користећи циклус До Унтил преузима вредности из свих ћелија у колони A радни лист све док колона не наиђе на празну ћелију:

иРов = 1 До Унтил ИсЕмпти(Целлс(иРов, 1)) 'Вредност тренутне ћелије је ускладиштена у низу дЦеллВалуес дЦеллВалуес(иРов) = Целлс(иРов, 1).Валуе иРов = иРов + 1 Лооп

У горњем примеру, услов ИсЕмпти(ћелије(иРов, 1)) налази се на почетку структуре До Унтил, тако да ће петља бити извршена најмање једном ако прва снимљена ћелија није празна.

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

Урадите ... петља док се не испразни (ћелије(иРов, 1))

Ostavite komentar