За следната vba excel преминете на следното. Изјави за јамка во VBA. Проект „Приход од депозит“

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

Изјава за јамка „За“ во Visual Basic

Структура на изјава за јамка Заво Visual Basic може да се организира во една од двете форми: како јамка За… Следноили како јамка За секој.

Јамката „За... Следно“.

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

За i = 1 до 10 Вкупно = Вкупно + iArray(i) Следно i

Во оваа едноставна јамка За… Следносе користи променлива јас, кој последователно ги зема вредностите 1, 2, 3, ... 10 и за секоја од овие вредности се извршува VBA кодот во јамката. Така, оваа јамка ги сумира елементите на низата iArrayво променлива Вкупно.

Во примерот погоре, чекорот за зголемување на јамката не е наведен, за да се зголеми променливата јасСтандардно зголемување од 1 до 10 1 . Меѓутоа, во некои случаи е потребно да се користат други вредности за зголемување за јамката. Ова може да се направи со клучниот збор чекор, како што е прикажано во следниот едноставен пример.

За d = 0 до 10 Чекор 0,1 dВкупно = dВкупно + d Следно d

Бидејќи во примерот погоре, чекорот на зголемување е еднаков на 0.1 , потоа променливата dВкупноза секое повторување на јамката ги зема вредностите 0,0, 0,1, 0,2, 0,3, ... 9,9, 10,0.

Можете да користите негативна вредност за да го дефинирате чекорот на јамката во VBA, вака:

За i = 10 До 1 Чекор -1 iArray(i) = i Следна i

Еве го прирастот -1 , па променливата јассо секое повторување на јамката ги зема вредностите 10, 9, 8, ... 1.

За секоја јамка

Циклус За секојкако циклус За… Следно, но наместо да се повторува низ низата вредности за променливата бројач, јамката За секојврши збир на дејства за секој објект од наведената група на објекти. Во следниот пример, користејќи јамка За секојги набројува сите листови во тековната работна книга на Excel:

Затемнете го wsheet како работен лист за секој wsheet во работни листови MsgBox „Листот е пронајден:“ & wSheet.Name Следен wSheet

Изјава за прекин на јамката „Излез за“

Оператор Излезете засе користи за кршење на јамката. Штом оваа изјава ќе се сретне во кодот, програмата го завршува извршувањето на циклусот и продолжува со извршувањето на изјавите во кодот веднаш по оваа јамка. Ова може да се користи, на пример, за пребарување на одредена вредност во низа. За да го направите ова, секој елемент од низата се гледа со помош на јамка. Штом се најде потребниот елемент, нема потреба да се гледа низ останатото - јамката е прекината.

Апликација за оператор Излезете заприкажан во следниот пример. Овде јамката се повторува низ 100 записи во низата и се споредува секој со вредноста на променливата dVal. Ако се најде совпаѓање, тогаш јамката се прекинува:

За i = 1 до 100 Ако dValues(i) = dVal Потоа IndexVal = i Излезете за крај ако следно i

Дали додека јамка во Visual Basic

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

„Постапката Sub дава фибоначи броеви кои не надминуваат 1000 Sub Fibonacci() Dim i As Integer „бројач за да ја означи позицијата на елементот во низата Dim iFib As Integer „ја складира тековната вредност на низата Dim iFib_Next As Integer „го складира следната вредност на секвенцата Dim iStep As Integer "ја складира големината на следниот прираст "иницијализирајте ги променливите i и iFib_Next i = 1 iFib_Next = 0 "Јамката Do while ќе се извршува додека вредноста на "тековниот број на Фибоначи" не надмине 1000 Do Додека iFib_Next< 1000 If i = 1 Then "особый случай для первого элемента последовательности iStep = 1 iFib = 0 Else "сохраняем размер следующего приращения перед тем, как перезаписать "текущее значение последовательности iStep = iFib iFib = iFib_Next End If "выводим текущее число Фибоначчи в столбце A активного рабочего листа "в строке с индексом i Cells(i, 1).Value = iFib "вычисляем следующее число Фибоначчи и увеличиваем индекс позиции элемента на 1 iFib_Next = iFib + iStep i = i + 1 Loop End Sub

Во дадениот пример, условот iFib_Next< 1000 проверено на почетокот на циклусот. Затоа, ако првата вредност iFib_NextАко има повеќе од 1000, тогаш јамката никогаш нема да се изврши.

Друг начин за спроведување на јамка Прави додека- поставете ја состојбата не на почетокот, туку на крајот на јамката. Во овој случај, јамката ќе се изврши барем еднаш, без оглед на тоа дали условот е исполнет.

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

Дали ... Loop while iFib_Next< 1000

Дали до јамка во Visual Basic

Циклус Дали домногу слично на циклусот Прави додека: блокот код во телото на циклусот се извршува одново и одново додека не се исполни наведениот услов (резултатот од условниот израз е Вистина). Во следната постапка Подкористејќи циклус Дали допреземете вредности од сите ќелии во колона Аработен лист додека не остане празна ќелија во колоната:

IRow = 1 Do Deri IsEmpty(Cells(iRow, 1)) „Вредноста на тековната ќелија е зачувана во низата dCellValues ​​dCellValues(iRow) = Cells(iRow, 1).Value iRow = iRow + 1 Loop

Во примерот погоре, состојбата IsEmpty (Ќелии (iRow, 1))се наоѓа на почетокот на структурата Дали до, така што јамката ќе се изврши барем еднаш ако првата преземена ќелија не е празна.

Сепак, како што е прикажано во примерите на јамката Прави додека, во некои ситуации потребно е јамката да се изврши барем еднаш, без оглед на почетниот резултат на условниот израз. Во овој случај, условниот израз треба да се стави на крајот на јамката, вака:

Направете ... Јамка додека не е празно (Ќелии (iRow, 1))

Изјави за јамка

Во VBA Постојат два главни типа на јамки со бројач (параметриски) и јамки со услов (итерација).

Јамките со бројач се користат во случаи кога е неопходно да се изврши некое дејство одреден број пати.

Условните јамки се користат кога некое дејство во програмата мора да се повтори додека не се исполни одреден услов.

Циклуси со параметарЗа… Следно

Структура на циклусот:

За Loop_Parameter = Почетна_вредностДо Конечна_вредност

[Чекор чекор]

Оператори

[излез за]

Следно [Параметар_јамка]

каде За клучен збор VBA (од), означувајќи го почетокот на циклусот;

loop_parameter променлива дефинирана како бројач на јамка;

Start_Value број кој ја одредува почетната вредност на параметарот на циклусот;

До клучниот збор VBA (пред) делење

Start_Value и End_Knowledge;

End_Value број кој ја одредува вредноста на параметарот на јамката,

На кој циклусот завршува;

Чекор клучен збор VBA (чекор) се користи за

Доделување чекори на јамка, опционален аргумент;

Чекор е број кој го одредува чекорот на циклусот, т.е. вредноста на која

Ја зголемува (или ја намалува) вредноста на параметарот

Возете велосипед на секој чекор. Овој број може да биде

негативен;

Излезете за Операторот за рано излегување на јамка (опционално);

Следно клучен збор VBA (следно) означува

Крај на циклусот.

Работа со циклус:

Чекор 1 Прво, се одредува параметарот на јамката и се пресметуваат и складираат почетните и крајните вредности на оваа променлива.

Чекор 2 На параметарот на јамката му се доделува почетна вредност.

Чекор 3 Почетната вредност на параметарот на јамката се споредува со крајната вредност.

Ако параметарот на јамката е поголем од крајната вредност, програмата веднаш излегува од циклусот и скока до линијата на код што следи по циклусот.

Чекор 4 Телото на јамката е извршено.

Чекор 5 По извршувањето на телото на јамката, следната вредност се доделува на параметарот на јамката. Одете на чекор 3.

Забелешка.

1. Ако се користи клучниот зборчекор , тогаш параметарот на циклусот се менува според бројот наведен по овој збор. Ако зборотчекор недостасува, вредноста на чекорот е еднаква на еден.

Пример 1

За I = 0 до 10 Чекор 2 (Вредност I ќе се зголеми за 2)

2. За… Следна јамка може да се прекине предвреме кога ќе се постигне било кој услов. За да го направите ова, на вистинското место во јамката, треба да го поставите операторотИзлезете за.

Пример 2

Dim S како цел број

Dim j Како цел број

S=2

За j = 1 до 10

S = S + j

Ако S > 6 Тогаш

Излезете за (Излезете од јамката ако вредноста S > 6)

Крај ако

Следно j

MsgBox(S)

Условни јамки (Итеративни)

Ако некое дејство (неколку дејства) треба да се изврши повеќе пати, но однапред не се знае колку пати и зависи од некој услов, тогаш треба да користите јамка со предуслов или постуслов.

Во VBA има два главни циклуси DO...LOOP со услов внесен по клучен зборДодека , и со условот воведен од клучниот зборДодека . И двете можат да бидат предуслов или постуслов.

Синтакса:

каде Дали клучен збор (направи);

Додека клучен збор (сеуште);

Додека клучен збор (се додека);

јамка клучен збор што укажува на крајот на циклусот;

<условие>логички израз чија вистинитост се проверува

На почетокот на секое извршување на телото на јамката;

<тело_цикла>произволна низа на оператори;

Дали...Додека се гради гласи: направи додека е исполнет условот. Во градежништвотоДали… Додека За

Направете ... До конструкција гласи: продолжи да правиш додека не се исполни условот. Во градежништвотоДали… До за да го зголемите чекорот, треба да напишете посебен оператор, бидејќи во него, за разлика од дизајнотЗа , ова не се прави автоматски.

Состојба напишана по клучниот зборДодека , се проверува на крајот од секое повторување (по извршувањето на телото на јамката). Забележете дека овде не работи сосема исто како во јамкатаДодека . Ако условот е вистинит (Вистина ), потоа јамката завршува. Ако условот не е исполнет (е лаженНеточно ), потоа телото на јамката повторно се извршува.

Пример 1

Формулирање на проблемот. Пресметајте го збирот на конечни серии користејќи потпрограма.

Технологија за извршување на задачи:

1. Првични податоци:јас З

Резултат: S  R.

2. Внесете ја следнава корисничка процедура во стандардниот модул на проектот користејќи јамка со предусловдодека:

субсума ()

Dim S како цел број

Dim i Како цел број

S=0

јас = 1

Направете додека јас<= 10

S=S+i^2

i = i + 1

јамка

MsgBox(S)

крај под

3. Внесете ја следнава корисничка процедура во стандардниот модул на проектот користејќи јамка со предусловДодека :

субсума ()

Dim S како цел број

Dim i Како цел број

S=0

јас = 1

Направете до јас > 10

S=S+i^2

i = i + 1

јамка

MsgBox(S)

крај под

4 Внесете ја следнава корисничка процедура во стандардниот модул на проектот, користејќи јамка со постусловдодека:

субсума ()

Dim S како цел број

Dim i Како цел број

S=0

јас = 1

S=S+i^2

i = i + 1

Јамка додека јас<= 10

MsgBox(S)

крај под

5 Внесете ја следнава корисничка процедура во стандардниот модул на проектот, користејќи јамка со постусловДодека :

субсума ()

Dim S како цел број

Dim i Како цел број

S=0

јас = 1

S=S+i^2

i = i + 1

Јамка до i > 10

MsgBox(S)

крај под

Може да има ситуација кога треба да извршите блок код повеќе пати. Генерално, изјавите се извршуваат последователно: првата изјава во функцијата се извршува прво, потоа втората и така натаму.

Програмските јазици обезбедуваат различни контролни структури кои обезбедуваат посложени патеки за извршување.

Изјавата за јамка ни овозможува да извршиме изјава или група на искази повеќе пати. Следува општиот приказ на изјавата за јамка во VBA.

VBA ги обезбедува следниве типови на јамки за справување со барањата за циклус. Кликнете на следните врски за да ги проверите нивните детали.

за јамка

Јамката за е контролна структура за повторување која му овозможува на развивачот ефикасно да напише циклус што треба да се изврши одреден број пати.

Синтакса

Следува синтаксата за јамката for во VBA.

За бројач = почеток До крај .... .... Следно

дијаграм на проток

Следува контролниот тек во режим на јамка -

  • Првиот чекор се прави. Овој чекор ви овозможува да ги иницијализирате сите контролни променливи на јамката и да ја зголемите променливата бројач на чекори.
  • Второ, состојбата се оценува. Ако е точно, телото на јамката се извршува. Ако е неточно, телото на циклусот не се извршува и контролниот тек продолжува до следната изјава веднаш по јамката For.
  • Откако ќе се изврши јамката for, контролниот тек се префрла на следната изјава. Оваа изјава ви овозможува да ги ажурирате сите контролни променливи на јамката. Се ажурира врз основа на вредноста на бројачот на чекори.
  • Состојбата сега повторно се проценува. Ако ова е точно, јамката се извршува и процесот се повторува (телото на јамката, потоа чекорот се зголемува, а потоа состојбата повторно). Откако условот ќе стане лажен, јамката For завршува.

пример

Додадете копче и додадете ја следнава функција.

Приватен под Constant_demo_Click() Затемнете го како цел број a = 10 За i = 0 До чекор 2 MsgBox "Вредноста е i е: " & i Следен крај Под

Кога горенаведениот код е компајлиран и извршен, тој го произведува следниот резултат.

Вредноста е i е: 0
Вредноста е i е: 2
Вредноста е i е: 4
Вредноста е i е: 6
Вредноста е i е: 8
Вредноста е i е: 10

Извршува низа од искази повеќе пати и го скратува кодот што ја контролира променливата јамка.

за...јамка

За секоја јамка се користи за извршување на изјава или група на искази за секој елемент во низа или колекција.

За секоја јамка е слична на For Loop; сепак, јамката се извршува за секој елемент во низата или групата. Затоа, бројачот на чекори нема да постои во овој тип на јамка. Главно се користи со низи или се користи во контекст на објекти датотечен системда работи рекурзивно.

Синтакса

Следува синтаксата на за секоја јамка во VBA.

За секој елемент во групата .... Следно

пример

Приватен под Constant_demo_Click() "овошјата е низа плодови = Низа ("јаболко", "портокалова", "цреши") Затемнети имиња на плодови Како варијанта "се повторува со употреба за секоја јамка. За секоја ставка во овошјето име на овошје = овошни имиња и ставки & Chr(10) Следна Msgbox Имиња на овошје Крај Под

Кога ќе се изврши горенаведениот код, тој ги печати сите имиња на овошје со еден елемент по линија.

јаболко
портокалова
цреша

Ова се извршува ако има барем еден елемент во групата и се повторува за секој елемент во групата.

додека..венд јамка

Во јамката додека ... Wend, ако условот е True, сите искази се извршуваат додека не се сретне клучниот збор Wend.

Ако условот е неточен, циклусот завршува и контролата се префрла на следната изјава по клучниот збор Wend.

Синтакса

Следува синтаксата на while..Wend циклус во VBA.

Додека услови(и) ... Wend

дијаграм на проток

пример

Приватен под Constant_demo_Click() Бројач за затемнување: бројач = 10 додека бројач< 15 " Test value of Counter. Counter = Counter + 1 " Increment Counter. msgbox "The Current Value of the Counter is: " & Counter Wend " While loop exits if Counter Value becomes 15. End Sub

Кога ќе се изврши горенаведениот код, тој ќе го даде следново во полето за пораки.

Тековната вредност на бројачот е: 11
Тековната вредност на бројачот е: 12
Тековната вредност на бројачот е: 13
Тековната вредност на бројачот е: 14
Тековната вредност на бројачот е: 15

Ова ја проверува состојбата пред да се изврши телото на јамката.

направи..while јамка

Јамката do...while се користи кога сакаме да повториме множество изјави додека условот е вистинит. Состојбата може да се провери на почетокот на циклусот или на крајот на циклусот.

Синтакса

Следува синтаксата на Do...While јамката во VBA.

Направи додека услов ... ... Јамка

дијаграм на проток

пример

Следниот пример користи Do ... while циклус за да го провери статусот на почетокот на циклусот. Изјавите во јамката се извршуваат само ако условот стане True.

Private Sub Constant_demo_Click() Do while i< 5 i = i + 1 msgbox "The value of i is: " & i Loop End Sub

Вредноста на i е: 1
Вредноста на i е: 2
Вредноста на i е: 3
Вредноста на i е: 4
Вредноста на i е: 5

Алтернативна синтакса

Постои и алтернативна синтакса за Do ... while циклус кој ја проверува состојбата на крајот од циклусот. Главната разлика помеѓу овие две синтакса е објаснета во следниот пример.

Дали ... ... Услов за јамка додека

пример

Следниот пример користи Do ... while циклус за да го провери статусот на крајот од циклусот. Изјавите внатре во циклусот се извршуваат барем еднаш, дури и ако условот е Неточен.

Приватен под Constant_demo_Click() i = 10 Do i = i + 1 MsgBox "Вредноста на i е: " & i Јамка додека i< 3 "Condition is false.Hence loop is executed once. End Sub

Кога горенаведениот код е извршен, тој го печати следниот излез во полето за пораки.

Вредноста на i е: 11

do..While изјавите ќе се извршуваат се додека условот е True. (т.е.) Јамката мора да се повторува додека условот не биде Неточен.

направи..интил јамка

Do ... intil циклусот нема да се користи кога сакаме да повториме множество изјави додека условот е неточен. Состојбата може да се провери на почетокот на циклусот или на крајот на циклусот.

Синтакса

Следува синтаксата на јамката Do..Until во VBA.

Дали до условот ... ... Јамка

дијаграм на проток

пример

Следниот пример користи Do ... Before Loop за тестирање на услов на почетокот на циклусот. Изјавите во јамката се извршуваат само ако условот е неточен. Излегува од јамката кога условот ќе стане вистинит.

Приватен под Constant_demo_Click() i = 10 Дали до i>15 "Состојбата е неточна. Оттука, јамката ќе се изврши i = i + 1 msgbox ("Вредноста на i е: " & i) Јамка Крај Под

Кога горенаведениот код е извршен, тој го печати следниот излез во полето за пораки.

Вредноста на i е: 11
Вредноста на i е: 12
Вредноста на i е: 13
Вредноста на i е: 14
Вредноста на i е: 15
Вредноста на i е: 16

Алтернативна синтакса

Постои и алтернативна синтакса Do ... Before Loop која ја тестира состојбата на крајот од циклусот. Главната разлика помеѓу овие две синтакса е објаснета со следниот пример.

Дали ... ... Јамка До услов

дијаграм на проток

пример

Следниот пример користи Do ... Before Loop за проверка на состојба на крајот од циклусот. Изјавите во јамката се извршуваат барем еднаш, дури и ако условот е True.

Приватен под Constant_demo_Click() i = 10 Do i = i + 1 msgbox "Вредноста на i е: " & i Loop Deri i more15 "Состојбата е точно. Оттука, јамката се извршува еднаш.

Кога горенаведениот код е извршен, тој го печати следниот излез во полето за пораки.

Вредноста на i е: 11

направи..Додека изјавите ќе се извршуваат се додека условот е Неточен. (т.е.) Јамката мора да се повторува додека условот не биде точен.

Записи за контрола на јамка

Изјавите за контрола на јамката го менуваат извршувањето од нивната нормална низа. Кога извршувањето излегува од опсегот, сите други изјави за јамка не се извршуваат.

Контролна изјава и опис

Излез на операторот

Излезот за се користи кога сакаме да излеземе од For Loop врз основа на одредени критериуми. Кога ќе се изврши Exit For, контролата преминува на следната изјава веднаш по јамката For.

Синтакса

Следува синтаксата на Exit For Statement во VBA.

дијаграм на проток

пример

Следниот пример користи Exit For. Ако броењето достигне 4, јамката For завршува и контролата преминува на следната изјава веднаш по јамката For.

Private Sub Constant_demo_Click() Dim a As Integer a = 10 За i = 0 До чекор 2 "i е бројачката променлива и се зголемува за 2 MsgBox ("Вредноста е i е: " & i) Ако i = 4 Тогаш i = i * 10 "Ова се извршува само ако i=4 MsgBox ("Вредноста е i е: " & i) Излезете за "Излезено кога i=4 Крај ако Следниот крај Под

Кога горенаведениот код е извршен, тој го печати следниот излез во полето за пораки.

Вредноста е i е: 0
Вредноста е i е: 2
Вредноста е i е: 4
Вредноста е i е: 40

Ја завршува изјавата за јамка For и го пренесува извршувањето на изјавата веднаш по циклусот

Излезете Do

Изјавата Exit Do се користи кога сакаме да излеземе од Do Loops врз основа на одредени критериуми. Може да се користи и во Do Do ... Додека и во Do ... Before.

Кога ќе се изврши Exit Do, контролата преминува на следната изјава веднаш по Do Loop.

Синтакса

Следува синтаксата на изјавата Exit Do во VBA.

пример

Следниот пример користи Exit Do. Ако бројачот достигне 10, излезната линија Do завршува и контролата преминува на следната изјава веднаш по јамката For.

Приватен под Constant_demo_Click() i = 0 Дали додека i<= 100 If i >10 Потоа Exit Do " Јамката излегува ако i>10 End If MsgBox ("Вредноста на i е: " & i) i = i + 2 Loop End Sub

Кога горенаведениот код е извршен, тој го печати следниот излез во полето за пораки.

Вредноста на i е: 0
Вредноста на i е: 2
Вредноста на i е: 4
Вредноста на i е: 6
Вредноста на i е: 8
Вредноста на i е: 10

Завршува изјава Do while и го пренесува извршувањето на изјавата веднаш по циклусот

Лабораториска работа на основите на програмирањето

2.1. Табелирање на функции претставени аналитички
и конвергирање во близина

целта на работата

· Консолидација на теоретските знаења за основите на организацијата на разгранети и циклични структури.

· Стекнување на практични програмски вештини со користење на разгранувачки и циклични структури во системот Visual Basic.

Постојат три вида на изјави за јамка во VB:

Циклус на броење: За...До...Следно

Јамки со предуслови: Do while...Loop, Do Deri...Loop, while...WEnd

Јамки со постуслови: Do...Loop while, Do...Loop Until.

Циклус на броење - ви овозможува да кружите низ збир на искази одреден број пати. Неговата синтакса е следна:

За бројач = ЗапочнетеДо крај

[оператори]

[оператори]

Следно[ бројач]

Параметар бројаче нумеричка променлива (цел број, реален или датум, варијанта, валута) која автоматски се зголемува по секое повторување. Почетна вредност бројачеднаков на параметарот Почни,а крајниот параметар е крај.Ако не е одредено, тогаш чекорот се смета за еднаков на 1, вредноста на чекорот може да се смени. Може да биде позитивен или негативен број.

Постојат четири синтаксички конструкции за Do….Loop:

Изјавите помеѓу клучните зборови Do...Loop се извршуваат одреден број пати во зависност од состојбата. На пример, во следниот програмски фрагмент, кога C = 100, условот ќе биде исполнет и јамката ќе влезе. Внатре во циклусот се повикува постапката и вредноста на C се намалува за 1. Потоа повторно се проверува условот (C > 0) и изјавите за циклусот се извршуваат повторно (тие ќе бидат извршени вкупно 100 пати), до C = 0. Кога условот C > 0 станува неточен и јамката ќе престане.

Дали додека C > 0

Истиот програмски фрагмент извршен со помош на јамка за предуслов во синтаксата 2:

Во овој случај, јамката се извршува додека условот е False, за разлика од претходниот случај, односно продолжува предисполнување на условот C = 0.

Изјавите за јамка во синтаксата 3 и 4 се многу слични на првите две, освен што условот несе оценува додека циклусот не се изврши барем еднаш.

Во синтаксата на овие циклуси, можете да ги користите операторите за безусловно излегување од циклусот Exit For и Exit Do, кои ви дозволуваат да ја пренесете контролата на операторот зад јамката. На пример, во следниот програмски фрагмент, ако почетната вредност на C е >50, тогаш јамката веднаш ќе престане.



Дали до C<= 0

MsgBox „Започни. вредноста е поголема од дозволената“, „Влезна грешка“

Јамката while...Wend се користеше во раните верзии на Visual Basic. Неговата синтакса е следна:

Додека<условие>

<Операторы>

За разлика од Do..Loop, јамката while ..Wend нема втора опција, во која тестот на состојбата се врши на крајот од циклусот. Покрај тоа, нема изјава за излез на јамка како Exit Do.

VBA. Организација на циклуси.

Изјавите за јамка се користат за повторување на извршувањето на дејство или група дејства одреден број пати. Бројот на повторувања (итерации на јамка) може да се предефинира или пресмета.

VBA поддржува два вида конструкции за циклуси:

  1. Јамки со фиксен број на повторувања ( циклуси со бројач).
  2. Јамки со неодреден број повторувања ( условни јамки).

За сите видови циклуси се користи концептоттело на јамка A што дефинира блок од искази затворени помеѓу почетните и завршните изјави на циклусот. Секое повторување на исказите во телото на јамката се нарекуваповторување .

Фиксни циклуси

VBA обезбедува две контролни структури за организирање на фиксна јамка: For ... Next (јамка со бројач) и For Every ... Next (јамка со набројување).

За… Следна изјава тоа е типична јамка со бројач што врши даден број повторувања. Синтаксата на За ... Следната изјава е:

За<счетчик> = <начЗначение>Тоа<конЗначение>

<блок операторов>

Следно[<счетчик>]

Пример за користење на изјавата За … Следно.

Опис 1. За … Следна изјава

ЦЕЛ: Напишете програма која прима два броја од корисникот.

Ги собира сите броеви во опсегот што го даваат тие два броја и потоа

„ Ја прикажува добиената сума.

Под примерок7()

Dim i As Integer ‘loop counter

Затемнето sStart 'почеток бројач вредност

Затемнете ја крајната вредност на бројачот за испраќање

Dim sSum As Long ‘резултантната сума

sStart = InputBox („Внесете го првиот број:“)

sEnd = InputBox („Внесете втор број:“)

sSum = 0

За i = CINT(sStart) До CINT(sEnd)

sSum = sSum + i

Следна јас

MsgBox „Збирот на броеви од “ & sStart & ” до ” & Send & ” е: ” & sSum

крај под

За секоја … Следна Изјава за јамкаспаѓа во категоријата оператори од тип на објект, т.е. се однесува првенствено на колекциитеобјекти како и низи . Телото на јамката се извршува фиксен број пати, што одговара на бројот на елементи во низата или колекцијата. Форматот на За секој… Следната изјава е:

За секој<элемент>Во<группа> <блок операторов>Следно[<элемент>]

Условни јамки (неопределени јамки)

Условните јамки се користат кога треба да се извршат повторени дејства само под одредени услови. Бројот на повторувања не е дефиниран и во општ случај може да биде еднаков на нула (особено, за јамки со предуслов). VBA им нуди на програмерите неколку контролни структури за организирање условни јамки:

  • Четири типа на јамки Do..Loop, кои се разликуваат по видот на состојбата што се проверува и времето на извршување на оваа проверка.
  • Непрекината Додека … Венд циклус.

Дали додека... Јамка - Типично јамка со предуслов. Состојбата се проверува пред да се изврши телото на јамката. Циклусот ја продолжува својата работа до него<условие>се извршува (т.е. е точно). Бидејќи проверката се врши на почетокот, телото на јамката можеби никогаш нема да се изврши. Формат на Do while … Јамка:

Прави додека<условие>

<блок операторов>

јамка

Опис 2. Дали додека ... Јамка

ЦЕЛ: Напишете програма што прифаќа внесување на корисникот

„произволна низа од броеви. Влезот мора да се прекине

„само откако збирот на внесените непарни броеви ќе надмине 100.

Под примерок8()

Затемнета непарна сума како цел број

Dim OddStr Како низа со непарни броеви

Dim Num 'за прифаќање на влезните броеви

OddStr = "" 'иницијализација на излезната низа

OddSum = 0 'иницијализација на OddSum sum

Дали додека непарен сума< 100 ‘начало цикла

Num = Влезна кутија („Внесете број:“)

Ако (Num Mod 2)<>0 Потоа ‘дури и паритет

Непарна сума = Непарна сума + Број „акумулација на збир на непарни броеви

OddStr = OddStr & Num & ”

Крај ако

јамка

„излезете низа со непарни броеви

Прашање за MsgBox:=”Непарни броеви: ” & OddStr

крај под

Do...Loop while изјаванаменети за организацијајамка со постуслов. Состојбата се проверува откако телото на јамката ќе се изврши барем еднаш. Циклусот продолжува до<условие>останува вистина. Формат на Do...Loop while:

Дали<блок операторов>јамка додека<условие>

Опис 3. Јамка со постуслов

ЦЕЛ: Направете програма за играта „Погоди го бројот“. Програмата треба по случаен избор

На начин да генерира број во опсег од 1 до 1000, корисникот мора

„Погодете ја оваа бројка. Програмата прикажува совет за секој внесен број.

' "повеќе или помалку".

Под примерок8()

Рандомизирај тајмер за иницијализација на генератор на случаен број

Затемнета порака како низа на пораки како низа

Затемнет таен број додека трае, кориснички број како варијанта

Почеток: SecretNumber = Round (Rnd * 1000) ' компјутерски генериран број

Кориснички број = Празен ‘ бројот што го внесе корисникот

Направете игра

Изберете Case True

Case IsEmpty(UserNumber): msg = "Ве молиме внесете број"

Case UserNumber > SecretNumber: msg = „Премногу!“

Кориснички број на случај< SecretNumber: msg = “Слишком мало!”

Крај Избери

Кориснички број = Влезна кутија (промп:=порака, наслов:=„Погоди го бројот“)

Јамка додека UserNumber<>таен број

' испитување

Ако MsgBox(„Дали сакате да играте повторно?“, vbYesNo + vbQuestion, „Добро погодивте!“) = vbYes Потоа

Оди на почеток

Крај ако

крај под

Направи до … Јамка и направи … Јамка до јамки се инверзии на претходно разгледани условни јамки. Во принцип, тие работат слично, освен што телото на јамката се извршува под лажна состојба (т.е.<условие>= Неточно). Форматот на јамката Do До ... е:

Дали до<условие> <блок операторов>јамка

Форматот на јамката Do … Loop Until е:

<блок операторов>

Јамка До<условие>

Практична задача:Повторно запишете ги програмите во Списоците 10 и 11 користејќи изјави за превртена јамка.

Додека јамка ... Wend исто така важи и за условни јамки. Овој операторцелосно одговара на структурата Do while … Loop. Форматот на јамката while … Wend е:

Додека<условие>

<блок операторов>

Венд

Карактеристична карактеристика на овој оператор е неможноста принуден прекин(прекини) на телото на јамката (изјавата Exit Do не работи во додека ... Wend јамка).

Прекин на јамка

Изјавата Exit се користи за завршување на повторувањето и за излез од циклусот. Оваа изјава е применлива во која било циклична структура, освен Додека ... Венд. Општата синтакса за користење на Exit за прекинување на јамка е:

<начало_цикла>

[<блок операторов1>]

Излез (за | Дали)

[<блок операторов2>]

<конец_цикла>

Кога ќе се изврши изјавата Exit, јамката се прекинува и контролата се пренесува на изјавата што следи по изјавата<конец_цикла>. Телото на јамката може да содржи повеќе Излезни изјави.

Опис 4. Принуден излез од јамката

Под примерок9()

За i = 1 до 10000000

Ако i = 10, тогаш Exit For ' излезете од јамката кога бројачот ќе достигне 10

Следно




Врв