Поиск циклом в миф

Поиск циклом в миф thumbnail

Цикл For… Next в VBA Excel, его синтаксис и описание отдельных компонентов. Примеры использования цикла For… Next.

Цикл For… Next в VBA Excel предназначен для выполнения группы операторов необходимое количество раз, заданное управляющей переменной цикла – счетчиком. При выполнении цикла значение счетчика после каждой итерации увеличивается или уменьшается на число, указанное выражением оператора Step, или, по умолчанию, на единицу. Когда необходимо применить цикл к элементам, количество которых и индексация в группе (диапазон, массив, коллекция) неизвестны, следует использовать цикл For Each… Next.

Синтаксис цикла For… Next

For counter = start To end [ Step step ]

[ ements ]

[ Exit For ]

[ ements ]

Next [ counter ]

For счетчик = начало To конец [ Step шаг ]

[ операторы ]

[ Exit For ]

[ операторы ]

Next [ счетчик ]

В квадратных скобках указаны необязательные атрибуты цикла For… Next.

Компоненты цикла For… Next

КомпонентОписание
counterОбязательный атрибут. Числовая переменная, выполняющая роль счетчика, которую еще называют управляющей переменной цикла.
startОбязательный атрибут. Числовое выражение, задающее начальное значение счетчика.
endОбязательный атрибут. Числовое выражение, задающее конечное значение счетчика.
Step*Необязательный атрибут. Оператор, указывающий, что будет задан шаг цикла.
stepНеобязательный атрибут. Числовое выражение, задающее шаг цикла. Может быть как положительным, так и отрицательным.
ementsНеобязательный** атрибут. Операторы вашего кода.
Exit ForНеобязательный атрибут. Оператор выхода из цикла до его окончания.
Next [ counter ]Здесь counter – необязательный атрибут. Это то же самое имя управляющей переменной цикла, которое можно здесь не указывать.

*Если атрибут Step отсутствует, цикл For… Next выполняется с шагом по умолчанию, равному 1.

**Если не использовать в цикле свой код, смысл применения цикла теряется.

Примеры циклов For… Next

Вы можете скопировать примеры циклов в свой модуль VBA, последовательно запускать их на выполнение и смотреть результаты.

Простейший цикл

Заполняем десять первых ячеек первого столбца активного листа Excel цифрами от 1 до 10:

Sub test1()

Dim i As Long

For i = 1 To 10

Cells(i, 1) = i

Next

End Sub

Простейший цикл с шагом

В предыдущий цикл добавлен оператор Step со значением 3, а результаты записываем во второй столбец:

Sub test2()

Dim i As Long

For i = 1 To 10 Step 3

Cells(i, 2) = i

Next

End Sub

Цикл с отрицательными аргументами

Этот цикл заполняет десять первых ячеек третьего столбца в обратной последовательности:

Sub test3()

Dim i As Long

For i = 0 To -9 Step -1

Cells(i + 10, 3) = i + 10

Next

End Sub

Увеличиваем размер шага до -3 и записываем результаты в четвертый столбец активного листа Excel:

Sub test4()

Dim i As Long

For i = 0 To -9 Step -3

Cells(i + 10, 4) = i + 10

Next

End Sub

Вложенный цикл

Внешний цикл последовательно задает индексы первых десяти строк активного листа, а вложенный цикл складывает числа в первых четырех ячейках строки с текущем индексом и записывает сумму в ячейку пятого столбца. Перед запуском вложенного цикла с накопительным сложением, пятую ячейку соответствующей строки обнуляем, чтобы в случае нахождения в ней какого-либо числа, оно не прибавилось к итоговой сумме.

Sub test5()

Dim i1 As Long, i2 As Long

For i1 = 1 To 10

‘Пятой ячейке в строке i1 присваиваем 0

Cells(i1, 5) = 0

For i2 = 1 To 4

Cells(i1, 5) = Cells(i1, 5) + Cells(i1, i2)

Next

Next

End Sub

Выход из цикла

В шестой столбец активного листа запишем названия десяти животных, конечно же, с помощью цикла For… Next:

Sub test6()

Dim i As Long

For i = 1 To 10

Cells(i, 6) = Choose(i, “Медведь”, “Слон”, “Жираф”, “Антилопа”, _

“Крокодил”, “Зебра”, “Тигр”, “Ящерица”, “Лев”, “Бегемот”)

Next

End Sub

Следующий цикл будет искать в шестом столбце крокодила, который съел галоши. В ячейку седьмого столбца цикл, пока не встретит крокодила, будет записывать строку «Здесь был цикл», а когда обнаружит крокодила, запишет «Он съел галоши» и прекратит работу, выполнив команду Exit For. Это будет видно по ячейкам рядом с названиями животных ниже крокодила, в которых не будет текста «Здесь был цикл».

Sub test7()

Dim i As Long

For i = 1 To 10

If Cells(i, 6) = “Крокодил” Then

Cells(i, 7) = “Он съел галоши”

Exit For

Else

Cells(i, 7) = “Здесь был цикл”

End If

Next

End Sub

Результат работы циклов For… Next из примеров:

Результат работы циклов For... Next из примеров

Результат работы циклов For… Next

Такие данные на активном листе Excel вы получите, если последовательно запустите на выполнение в редакторе VBA все семь подпрограмм из примеров, демонстрирующих работу циклов For… Next.

Цикл с дробными аргументами

Атрибуты start, end и step могут быть представлены числом, переменной или числовым выражением:

For i = 1 To 20 Step 2

For i = a To b Step c

For i = a – 3 To 2b + 1 Step c/2

В результате вычисления значения переменной вне цикла или выражения внутри его может получиться дробный результат. VBA Excel округлит его до целого числа, используя бухгалтерское округление:

‘Значения атрибутов до округления

For i = 1.5 To 10.5 Step 2.51

‘Округленные значения атрибутов

For i = 2 To 10 Step 3

Старайтесь не допускать попадания в тело цикла For… Next неокругленных значений аргументов, чтобы не получить непредсказуемые результаты его выполнения. Если без дробных чисел не обойтись, а необходимо использовать обычное округление, применяйте в коде VBA функцию рабочего листа Worksheet.Round для округления числа перед использованием его в цикле For… Next.

Источник

Встречаются ситуации, когда от программы VBA требуется совершить несколько раз подряд один и тот же набор действий (то есть повторить несколько раз один и тот же блок кода). Это может быть сделано при помощи циклов VBA.

К циклам VBA относятся:

  • Цикл For
  • Цикл Do While
  • Цикл Do Until

Далее мы подробно рассмотрим каждый из этих циклов.

Оператор цикла «For» в Visual Basic

Структура оператора цикла For в Visual Basic может быть организована в одной из двух форм: как цикл For … Next или как цикл For Each.

Цикл «For … Next»

Цикл For … Next использует переменную, которая последовательно принимает значения из заданного диапазона. С каждой сменой значения переменной выполняются действия, заключённые в теле цикла. Это легко понять из простого примера:

For i = 1 To 10 Total = Total + iArray(i) Next i

В этом простом цикле For … Next используется переменная i, которая последовательно принимает значения 1, 2, 3, … 10, и для каждого из этих значений выполняется код VBA, находящийся внутри цикла. Таким образом, данный цикл суммирует элементы массива iArray в переменной Total.

Читайте также:  Для современных экономических циклов не характерно

В приведённом выше примере шаг приращения цикла не указан, поэтому для пошагового увеличения переменной i от 1 до 10 по умолчанию используется приращение 1. Однако, в некоторых случаях требуется использовать другие значения приращения для цикла. Это можно сделать при помощи ключевого слова Step, как показано в следующем простом примере.

For d = 0 To 10 Step 0.1 dTotal = dTotal + d Next d

Так как в приведённом выше примере задан шаг приращения равный 0.1, то переменная dTotal для каждого повторения цикла принимает значения 0.0, 0.1, 0.2, 0.3, … 9.9, 10.0.

Для определения шага цикла в VBA можно использовать отрицательную величину, например, вот так:

For i = 10 To 1 Step -1 iArray(i) = i Next i

Здесь шаг приращения равен -1, поэтому переменная i с каждым повторением цикла принимает значения 10, 9, 8, … 1.

Цикл «For Each»

Цикл For Each похож на цикл For … Next, но вместо того, чтобы перебирать последовательность значений для переменной-счётчика, цикл For Each выполняет набор действий для каждого объекта из указанной группы объектов. В следующем примере при помощи цикла For Each выполняется перечисление всех листов в текущей рабочей книге Excel:

Dim wSheet As Worksheet For Each wSheet in Worksheets MsgBox “Найден лист: ” & wSheet.Name Next wSheet

Оператор прерывания цикла «Exit For»

Оператор Exit For применяется для прерывания цикла. Как только в коде встречается этот оператор, программа завершает выполнение цикла и переходит к выполнению операторов, находящихся в коде сразу после данного цикла. Это можно использовать, например, для поиска определённого значения в массиве. Для этого при помощи цикла просматривается каждый элемент массива. Как только искомый элемент найден, просматривать остальные нет необходимости – цикл прерывается.

Применение оператора Exit For продемонстрировано в следующем примере. Здесь цикл перебирает 100 записей массива и сравнивает каждую со значением переменной dVal. Если совпадение найдено, то цикл прерывается:

For i = 1 To 100 If dValues(i) = dVal Then IndexVal = i Exit For End If Next i

Цикл «Do While» в Visual Basic

Цикл Do While выполняет блок кода до тех пор, пока выполняется заданное условие. Далее приведён пример процедуры Sub, в которой при помощи цикла Do While выводятся последовательно числа Фибоначчи не превышающие 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 While 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, то цикл бы не выполнялся ни разу.

Другой способ реализовать цикл Do While – поместить условие не в начале, а в конце цикла. В этом случае цикл будет выполнен хотя бы раз, не зависимо от того, выполняется ли условие.

Схематично такой цикл Do While с проверяемым условием в конце будет выглядеть вот так:

Do … Loop While iFib_Next < 1000

Цикл «Do Until» в Visual Basic

Цикл Do Until очень похож на цикл Do While: блок кода в теле цикла выполняется раз за разом до тех пор, пока заданное условие выполняется (результат условного выражения равен True). В следующей процедуре Sub при помощи цикла Do Until извлекаются значения из всех ячеек столбца A рабочего листа до тех пор, пока в столбце не встретится пустая ячейка:

iRow = 1 Do Until IsEmpty(Cells(iRow, 1)) ‘Значение текущей ячейки сохраняется в массиве dCellValues dCellValues(iRow) = Cells(iRow, 1).Value iRow = iRow + 1 Loop

В приведённом выше примере условие IsEmpty(Cells(iRow, 1)) находится в начале конструкции Do Until, следовательно цикл будет выполнен хотя бы один раз, если первая взятая ячейка не пуста.

Однако, как было показано в примерах цикла Do While, в некоторых ситуациях нужно, чтобы цикл был выполнен хотя бы один раз, не зависимо от первоначального результата условного выражения. В таком случае условное выражение нужно поместить в конце цикла, вот так:

Do … Loop Until IsEmpty(Cells(iRow, 1))

Оцените качество статьи. Нам важно ваше мнение:

Источник

Сообщение от Diskretor

Visual Basic
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45Sub aa() Dim CStart As Range, BaseStart As Range, Firm$, Mail$, Face$, Ex$, NotEx$, Success As Boolean Dim yBase&, yDest&, y&, x%, ArBase, n& Set CStart = Sheets(1).[A9] ‘окдп начинается с листа № 1 (ячейка А9) Set BaseStart = Sheets(2).[E1] ‘данные начинаются с листа 2 (ячейка Е1) Ex = “Обратите внимание на объявленные процедуры, которые могут быть Вам интересны:” NotEx = “в Краснодарском крае не было размещено заявок по интересующим Вас критериям.” yDest = 1 x = 1 ReDim ArBase(1 To Range(BaseStart, BaseStart.End(xlDown)).Cells.Count) ‘сгружаем в массив все окдп в базе For n = BaseStart.Row To BaseStart.End(xlDown).Row ArBase(x) = Sheets(2).Cells(n, BaseStart.Column) x = x + 1 Next For x = 1 To CStart.Offset(-1).End(xlToRight).Column Step 2 ‘кол-во фирм = кол-во столбцов /2 Sheets(3).Cells(yDest, 1) = “Фирма” & x 2 + 1 Sheets(3).Cells(yDest, 2) = Sheets(1).Cells(CStart.Row, x).Offset(-4, 1) ‘Firm Sheets(3).Cells(yDest, 3) = “почта” Sheets(3).Cells(yDest, 4) = Sheets(1).Cells(CStart.Row, x).Offset(-2, 1) ‘Mail Sheets(3).Cells(yDest + 1, 1) = “Доброго дня, ” & Sheets(1).Cells(CStart.Row, x).Offset(-3, 1) & “!” ‘Face For y = CStart.Row To Sheets(1).Cells(Rows.Count, x).End(xlUp).Row ‘по всем окдп For n = 1 To UBound(ArBase) ‘по всем окдп базы (из массива) If InStr(ArBase(n), Trim(Sheets(1).Cells(y, x).Value)) <> 0 Then If Success = False Then Success = True Sheets(3).Cells(yDest + 2, 1) = Ex yDest = yDest + 3 End If Range(Sheets(2).Cells(n, 1), Sheets(2).Cells(n, 9)).Copy Sheets(3).Range(“A” & yDest) yDest = yDest + 1 End If Next n Next y If Success = False Then Sheets(3).Cells(yDest + 2, 1) = NotEx yDest = yDest + 4 Else Success = False yDest = yDest + 1 End If Next End Sub

Объясните грабли: почему нельзя писать так и как можно?

Automation Error – в последней строке (и в закоментированной тоже) (причем только в офисе 2003):

Visual Basic
1 2 3 4Set CStart = Sheets(1).[A9] Set BaseStart = Sheets(2).[E1] ‘ArBase = Application.Transpose(Range(BaseStart, BaseStart.End(xlDown))) ArBase = Application.Transpose(Sheets(2).Range(BaseStart.Address, BaseStart.End(xlDown).Address))

А вы могли бы описать тела цикла?

Добавлено через 19 часов 25 минут

Доброго дня, я юзал цикл, возник вопрос по циклу.

Он проверяет до полного соответствия, но есть и групповые окдп.

т.е. как вшить в цикл след проверку.

если i=7 вывод иначе i=i+1 иначе если i>1 и ОКДПорг = 0 то иначе след ОКДПорг.

Я прилагаю реальный исходник в листе 1

Добавлено через 1 час 4 минуты

Поясню, ОКДП которые запрашивает организация, могут не находиться в исходинке, они могут быть случайными. к примеру есть 0112000: Овощи. В них входят :

1531103: Мука пшеничная первого сорта, 1531102: Мука пшеничная высшего сорта

0112630: Кабачки, 0112610: Огурцы, 0112521: Перец сладкий, 0112510: Помидоры, 0112411: Лук репчатый на репку, 0112250: Морковь столовая, 0112240: Свекла столовая, 0112210: Капуста, 0112110: Картофель

0112720: Укроп, 0112610: Огурцы, 0112530: Баклажаны, 0112520: Перец, 0112510: Помидоры, 0112411: Лук репчатый на репку, 0112270: Петрушка, 0112250: Морковь столовая, 0112240: Свекла столовая, 0112212: Капуста белокочанная средняя и поздняя, 0112111: Клубни картофеля раннеспелого и среднеспелого

1511032: Изделия колбасные [1511330] – [1511382]

0112110: Картофель

0112411: Лук репчатый на репку

1511232: Мясо цыплят свежее, охлажденное или замороженное, 1511021: Пищевые субпродукты крупного рогатого скота, свиней, овец, баранов, коз, лошадей, ослов, мулов или ишаков свежие, охлажденные, замороженные [1511210] – [1511226]

1513560: Фрукты сушеные, включая смеси, порошки и сухое пюре

Читайте также:  Модель делового цикла ограничивает

Источник

Может возникнуть ситуация, когда вам нужно выполнить блок кода несколько раз. В общем случае операторы выполняются последовательно: сначала выполняется первый оператор в функции, затем второй и т. Д.

Языки программирования предоставляют различные структуры управления, которые обеспечивают более сложные пути выполнения.

Оператор цикла позволяет нам выполнять оператор или группу операторов несколько раз. Ниже приведен общий вид оператора цикла в VBA.

VBA предоставляет следующие типы циклов для обработки требований циклирования. Нажмите следующие ссылки, чтобы проверить их детали.

for цикл

Цикл for – это структура управления повторением, которая позволяет разработчику эффективно писать цикл, который необходимо выполнить определенное количество раз.

Синтаксис

Ниже приведен синтаксис цикла for в VBA.

For counter = start To end [Step stepcount] [ement 1] [ement 2] …. [ement n] [Exit For] [ement 11] [ement 22] …. [ement n] Next

Диаграмма потока

Работа с циклами в VBA:loop, for each, for next

Ниже приведен поток управления в режиме Loop –

  • Первый шаг выполняется. Этот шаг позволяет инициализировать любые переменные управления контурами и увеличивать переменную счетчика шагов.
  • Во-вторых, условие оценивается. Если это правда, выполняется тело цикла. Если оно ложно, тело цикла не выполняется, и поток управления переходит к следующему оператору сразу после цикла For.
  • После выполнения цикла цикла For поток управления переходит к следующему оператору. Этот оператор позволяет вам обновлять любые переменные управления циклом. Он обновляется на основе значения счетчика шагов.
  • Условие теперь оценивается снова. Если это правда, цикл выполняется, и процесс повторяется (тело цикла, затем увеличивают шаг, а затем снова условие). После того, как условие становится ложным, цикл For заканчивается.

пример

Добавьте кнопку и добавьте следующую функцию.

Private Sub Constant_demo_Click() Dim a As Integer a = 10 For i = 0 To a Step 2 MsgBox “The value is i is : ” & i Next End Sub

Когда приведенный выше код компилируется и выполняется, он производит следующий результат.

The value is i is : 0

The value is i is : 2

The value is i is : 4

The value is i is : 6

The value is i is : 8

The value is i is : 10

Выполняет последовательность операторов несколько раз и сокращает код, управляющий переменной цикла.

for … loop

Для каждого цикла используется для выполнения оператора или группы операторов для каждого элемента в массиве или коллекции.

Для каждого цикла аналогичен For Loop; однако цикл выполняется для каждого элемента в массиве или группе. Следовательно, счетчик шагов не будет существовать в этом типе цикла. Он в основном используется с массивами или используется в контексте объектов файловой системы, чтобы работать рекурсивно.

Синтаксис

Ниже приведен синтаксис цикла For Each в VBA.

For Each element In Group [ement 1] [ement 2] …. [ement n] [Exit For] [ement 11] [ement 22] Next

пример

Private Sub Constant_demo_Click() ‘fruits is an array fruits = Array(“apple”, “orange”, “cherries”) Dim fruitnames As Variant ‘iterating using For each loop. For Each Item In fruits fruitnames = fruitnames & Item & Chr(10) Next MsgBox fruitnames End Sub

Когда вышеуказанный код выполняется, он печатает все имена фруктов с одним элементом в каждой строке.

apple

orange

cherries

Это выполняется, если в группе есть хотя бы один элемент и повторяется для каждого элемента в группе.

while..wend loop

В цикле While While … Wend , если условие равно True, все операторы выполняются до тех пор, пока не встретится ключевое слово Wend.

Если условие ложно, цикл завершается, и элемент управления переходит к следующему оператору после ключевого слова Wend .

Синтаксис

Ниже приведен синтаксис цикла While..Wend в VBA.

While condition(s) [ements 1] [ements 2] … [ements n] Wend

Диаграмма потока

Работа с циклами в VBA:loop, for each, for next

пример

Private Sub Constant_demo_Click() Dim Counter : Counter = 10 While Counter < 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

Когда вышеуказанный код выполняется, он выводит следующее в поле сообщения.

The Current Value of the Counter is : 11

The Current Value of the Counter is : 12

The Current Value of the Counter is : 13

The Current Value of the Counter is : 14

The Current Value of the Counter is : 15

Это проверяет условие перед выполнением тела цикла.

Цикл do..while

Do … while цикл используется, когда мы хотим повторить набор операторов, пока условие истинно. Условие может быть проверено в начале цикла или в конце цикла.

Читайте также:  Бледно розовые выделения в начале цикла

Синтаксис

Ниже приведен синтаксис цикла Do … While в VBA.

Do While condition [ement 1] [ement 2] … [ement n] [Exit Do] [ement 1] [ement 2] … [ement n] Loop

Диаграмма потока

Работа с циклами в VBA:loop, for each, for next

пример

В следующем примере используется цикл 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

Когда выполняется вышеуказанный код, он печатает следующий вывод в окне сообщения.

The value of i is : 1

The value of i is : 2

The value of i is : 3

The value of i is : 4

The value of i is : 5

Альтернативный синтаксис

Существует также альтернативный синтаксис для Do … while loop, который проверяет состояние в конце цикла. Основное различие между этими двумя синтаксисами объясняется в следующем примере.

Do [ement 1] [ement 2] … [ement n] [Exit Do] [ement 1] [ement 2] … [ement n] Loop While condition

пример

В следующем примере используется цикл Do … while для проверки состояния в конце цикла. Заявления внутри цикла выполняются хотя бы один раз, даже если условие False.

Private Sub Constant_demo_Click() i = 10 Do i = i + 1 MsgBox “The value of i is : ” & i Loop While i < 3 ‘Condition is false.Hence loop is executed once. End Sub

Когда выполняется вышеуказанный код, он печатает следующий вывод в окне сообщения.

The value of i is : 11

Операторы do..While будут выполняться до тех пор, пока условие равно True. (Т. Е.) Петля должна повторяться до тех пор, пока условие не будет False.

do..intil loop

Do … intil цикл не будет использован, когда мы хотим повторить набор операторов, пока условие ложно. Условие может быть проверено в начале цикла или в конце цикла.

Синтаксис

Ниже приведен синтаксис цикла Do..Until в VBA.

Do Until condition [ement 1] [ement 2] … [ement n] [Exit Do] [ement 1] [ement 2] … [ement n] Loop

Диаграмма потока

Работа с циклами в VBA:loop, for each, for next

пример

В следующем примере используется Do … До цикла, чтобы проверить условие в начале цикла. Операторы внутри цикла выполняются только в том случае, если условие ложно. Он выходит из цикла, когда условие становится истинным.

Private Sub Constant_demo_Click() i = 10 Do Until i>15 ‘Condition is False.Hence loop will be executed i = i + 1 msgbox (“The value of i is : ” & i) Loop End Sub

Когда выполняется вышеуказанный код, он печатает следующий вывод в окне сообщения.

The value of i is : 11

The value of i is : 12

The value of i is : 13

The value of i is : 14

The value of i is : 15

The value of i is : 16

Альтернативный синтаксис

Существует также альтернативный синтаксис Do … До цикла, который проверяет условие в конце цикла. Основное различие между этими двумя синтаксисами объясняется следующим примером.

Do [ement 1] [ement 2] … [ement n] [Exit Do] [ement 1] [ement 2] … [ement n] Loop Until condition

Диаграмма потока

Работа с циклами в VBA:loop, for each, for next

пример

В следующем примере используется Do … До цикла, чтобы проверить условие в конце цикла. Операторы внутри цикла выполняются хотя бы один раз, даже если условие равно True.

Private Sub Constant_demo_Click() i = 10 Do i = i + 1 msgbox “The value of i is : ” & i Loop Until i more15 ‘Condition is True.Hence loop is executed once. End Sub

Когда выполняется вышеуказанный код, он печатает следующий вывод в окне сообщения.

The value of i is : 11

Операторы do..Until будут выполняться до тех пор, пока условие False. (Т. Е.) Петля должна повторяться до тех пор, пока условие не будет истинным.

Записи управления циклом

Операторы управления циклом изменяют исполнение из своей обычной последовательности. Когда выполнение выходит из области действия, все остальные операторы цикла не выполняются.

Контрольное заявление и описание

Выход для оператора

Выход for используется , когда мы хотим , чтобы выйти из For Loop на основе определенных критериев. Когда Exit For выполняется, управление переходит к следующему оператору сразу после цикла For Loop.

Синтаксис

Ниже приведен синтаксис Exit For ement в VBA.

Диаграмма потока

Работа с циклами в VBA:loop, for each, for next

пример

В следующем примере используется Exit For . Если значение счетчика достигает 4, цикл For Loop завершается, и управление переходит к следующему утверждению сразу после цикла For Loop.

Private Sub Constant_demo_Click() Dim a As Integer a = 10 For i = 0 To a Step 2 ‘i is the counter variable and it is incremented by 2 MsgBox (“The value is i is : ” & i) If i = 4 Then i = i * 10 ‘This is executed only if i=4 MsgBox (“The value is i is : ” & i) Exit For ‘Exited when i=4 End If Next End Sub

Когда вышеуказанный код выполняется, он печатает следующий вывод в окне сообщений.

The value is i is : 0

The value is i is : 2

The value is i is : 4

The value is i is : 40

Завершает оператор цикла For и передает выполнение в оператор сразу после цикла

Exit Do

Exit Do Заявление используется , когда мы хотим , чтобы выйти из Do Loops на основе определенных критериев. Он может использоваться как в Do Do … While, так и Do … До циклов.

Когда Exit Do выполняется, управление переходит к следующему оператору сразу после Do Loop.

Синтаксис

Ниже приведен синтаксис выражения Exit Do в VBA.

пример

В следующем примере используется Exit Do . Если значение счетчика достигает 10, выходная линия Do завершается, и управление переходит к следующему оператору сразу после цикла For Loop.

Private Sub Constant_demo_Click() i = 0 Do While i <= 100 If i > 10 Then Exit Do ‘ Loop Exits if i>10 End If MsgBox (“The Value of i is : ” & i) i = i + 2 Loop End Sub

Когда выполняется вышеуказанный код, он печатает следующий вывод в окне сообщения.

The Value of i is : 0

The Value of i is : 2

The Value of i is : 4

The Value of i is : 6

The Value of i is : 8

The Value of i is : 10

Завершает оператор Do While и передает выполнение в оператор сразу после цикла

С уважением, авторы сайта Компьютерапия

Понравилась статья? Поделитесь ею с друзьями и напишите отзыв в комментариях!

Источник