Массивы и циклы в vba access 2003

Vba excel как прервать цикл while

VBA For Each Loop

The VBA For Each loop is a scope that defines a list of statements that are to be repeated for all items specified within a certain collection/array of items. The For Each loop, as compared to the For loop, can’t be used to iterate from a range of values specified with a starting and ending value.How to declare a For Each Loop:

For Each Iterator in Items
   '...Code here...
Next 
Items Description
Iterator The iterating variable. Used to iterate through the elements of the collection or array
Items A collection or array of items
Next Closing statement for the loop. Optionally you can specify the Iterator variable

See examples below of how to use this kind of iteration through objects/collections.

VBA For Each example

Below a simple For Each example:

Dim x(3) as Long, xIterator as Variant
x(0) = 1: x(1) = 2: x(2) = 3

For Each xIterator in x
   Debug.Print x
Next xIterator
'Result: 1,2,3

The For Each Loop is easier to use in the sense that you need not specify a starting and ending variable value. However, the For Each loop is a treacherous loop! Using the For Each Loop is some cases will come at a high performance cost. Skip to For vs For Each to understand the dangers of using For Each.

Глаголы с to-Infinitive и -ing формой без изменения смысла в предложениях

Понятно, что можно выучить слова и употреблять их как с герундием, так и с инфинитивом, но все же есть несколько нюансов, которые нужно знать:

1. To-infinitive и -ing form

Глаголы continue (продолжать), begin (начинать), intend (намереваться), start (начинать) используются с частицей to и -ing формой:

— My brother began to run around shouting ИЛИ My brother began running around shouting. – Мой брат начал бегать и кричать.

Однако просим заметить, что сразу два герундия несовместимы в предложении:

— The days are beginning getting shorter.

Вместо этого, нужно поставить частицу to:

— The days are beginning to get shorter. – Дни становятся короче.

2. Инфинитив с пассивным залогом и дополнением

Когда после слов allow (разрешать), advise (советовать), encourage (ободрять), permit (разрешать), recommend (рекомендовать) следует дополнение или пассивная форма, то используется инфинитив:

— The teacher doesn’t allow us to eat in class. – Учитель не разрешает нам есть в классе. (В предложение присутствует дополнение – us).
— We aren’t allowed to eat in class. – Нам не разрешено есть в классе. (Passive form).

Когда после вышеупомянутых глаголов нет дополнения, то используется герундий:

— They don’t allow eating in class. – Они не разрешают есть в классе.

3. Инфинитив и Герундий со словами need, want и require

Need, require, want за ними следует to-inf, -ing form или инфинитив в пассивной форме:

— You need to redecorate your flat / Your flat needs redecorating / Your flat needs to be redecorated.

Условия

Условие — это утверждение, которое оценивается как истинное или ложное. Они в основном используются с операторами Loops и If. При создании условия вы используете такие знаки, как >, <, <>,> =, =.

Ниже приведены примеры условий

Условие Истина, когда…
x < 5 x меньше 5
x <= 5 x меньше либо равен 5
x > 5 x больше 5
x >= 5 x больше либо равен 5
x = 5 x равен 5
x <> 5 x не равен 5
x > 5 And x < 10 x больше 5 И меньше 10
x = 2 Or x >10 x равен 2 ИЛИ больше 10
Range(«A1») = «Иван» Ячейка A1 содержит текст «Иван»
Range(«A1») <> «Иван» Ячейка A1 не содержит текст «Иван»

Вы могли заметить x = 5 как условие. Его следует путать с х = 5, при использовании в качестве назначения.

Например

' означает: значение 6 будет храниться в х
x = 6

' означает: х равен 6?
If x = 6

' означает: х равен 6?
Do While x = 6

В следующей таблице показано, как «=» используется в условиях и назначениях.

Использование «=» Тип Имеется в виду
Loop Until x = 5 Условие x равен 5?
Do While x = 5 Условие x равен 5?
If x = 5 Then Условие x равен 5?
For x = 1 To 5 Присваивание Установите значение x = 1, затем = 2 и т.д.
x = 5 Присваивание Установите значение x=5
b = 6 = 5 Присваивание и условие Присвойте b результату условия 6 = 5
x = MyFunc(5,6) Присваивание Присвойте х значение, возвращаемое функцией

Циклы

Последнее обновление: 30.10.2015

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

  • For…Next

  • For Each…Next

  • While

  • Do

Цикл For…Next

В этом цикл выполняется определенное число раз, причем это число задается счетчиком:

For i As Integer = 1 To 9
    Console.WriteLine("Квадрат числа {0} равен {1}", i, i * i)
Next

Здесь переменная i выполняет роль счетчика. После слова To мы помещаем максимальное значение счетчика. При каждом цикле значение счетчика увеличивается
на единицу. И это значение сравнивается со значением после To. Если эти два значения равны, то цикла прекращает свою работу.

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

For i As Integer = 1 To -9 Step -1
    For j As Integer = 1 To 9
        Console.WriteLine("Произведение чисел i и j равно {0}", i * j)
        j += 1
    Next
Next

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

В итоге внутренний цикл отрабатывает пять раз, а внешний девять, то есть фактически получается 45 циклов.

Цикл For Each…Next

Цикл For Each осуществляет перебор элементов в определенной группе, например, в массиве или в коллекции. Предположим у нас есть некоторый массив
типа Integer и нам надо инициализировать этот массив случайными значениями и затем вывести все его элементы на экран:

'Создаем массив из пяти чисел
Dim nums(4) As Integer
Dim r As New Random()
'инициализируем массив
For i As Integer = 0 To nums.Length - 1
    nums(i) = r.Next(100)
Next
'Выводим элементы массива
For Each i As Integer In nums
    Console.Write("{0} ", i)
Next

В выражении For Each мы сначала указываем переменную, которая будет принимать значения элементов массива. А после ключевого слова In
указываем группу, в которой надо перебрать все элементы.

Цикл While

В цикл While выполняется до тех пор, пока соблюдается определенное условие, указанное после слова While:

Dim j As Integer = 10
While j > 0
    Console.WriteLine(j)
    j -= 1
End While

Цикл Do

Цикл Do, также как и цикл While, выполняется, пока соблюдается определенное условие. Однако он имеет разные формы. Так, в следующем примере
сначала проверяется условие, а затем выполняется блок кода, определенный в цикле:

Dim j As Integer = 10
Do While j > 0
    Console.WriteLine(j)
    j -= 1
Loop

В данном случае цикл выполняется, пока значение j больше нуля. Но есть еще одна запись, где вместо слова While используется слово
Until, а цикл выполняется пока не соблюдено определенное условие, то есть пока значение j не станет меньше нуля:

Dim j As Integer = 10
Do Until j < 0
    Console.WriteLine(j)
    j -= 1
Loop

Если изначально условие, заданное в цикле, неверно, то цикл не будет работать. Но мы можем определить проверку в конце цикла, и таким образом,
наш цикл как минимум один раз отработает:

Dim j As Integer = -1
Do
    Console.WriteLine(j)
     j -= 1
Loop Until j < 0
'либо
Do
    Console.WriteLine(j)
    j -= 1
Loop While j > 0		

Операторы Continue и Exit

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

Dim r As New Random()
Dim num As Integer = r.Next(100)

For i As Integer = 0 To 100
    num -= 1
    If num < 50 Then Exit For
Next
Console.WriteLine(num)

Существует и другая задача — осуществить выход не из цикла, а из текущего прохода или итерации и перейти к следующему. Для этого используют
оператор Continue, после которого указывают тип цикла, из которого осуществляется выход, например, :

Dim r As New Random()
Dim num As Integer = r.Next(100)

For i As Integer = 0 To 10
    num -= 7
    If num < 50 AndAlso num > 25 Then
        Continue For
    End If

    Console.WriteLine(num)
Next

В данном случае мы в каждом проходе цикла вычитаем из num число 7 и затем смотрим, не принадлежит ли число num интервалу от 25 до 50.
И если принадлежит, переходим к новой итерации цикла, а если нет, то выводим его на экран.

НазадВперед

Синтаксис VBA Циклы в VBA

Циклы используются в ситуациях, когда нам нужно выполнить какое-либо действие несколько раз. Первая ситуация — мы знаем, сколько раз нужно выполнить какое-либо действие, в этом случае используется конструкция For…Next:

For iCounter = 1 to 10

MsgBox «Счетчик: » & iCounter

Чтобы указать, насколько должно прирастать значение счетчика, используется ключевое слово Step:

For iCounter = 1 to 10 Step 2

MsgBox «Счетчик: » & iCounter

Можно и уменьшать исходное значение счетчика:

For iCounter = 10 to 1 Step -2

MsgBox «Счетчик: » & iCounter

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

VStop = InputBox (“Введите значение останова”)

For iCounter = 1 to 10

MsgBox «Счетчик: » & iCounter

If iCounter =VInput Then Exit For

Очень часто в VBA требуется сделать какое-нибудь действие со всеми элементам коллекции или массива — перебрать все открытые документы, все листы Excel, все ячейки в определенном диапазоне и т.п. Для того, чтобы пройти циклом по всем элементам коллекции, используется команда For Each … Next:

For Each oWbk in Workbooks

При использовании этого приема можно очень просто найти и получить ссылку на нужный нам объект:

For Each oWbk in Workbooks

If oWbk.Name = «Сводка.xls» Then

Set oMyWorkBook = oWbk

В этом случае мы проходим циклом по всем элементам коллекции Workbooks (то есть открытым рабочим книгам в Excel), для каждой книги проверяем ее имя, и если мы нашли книгу с именем Сводка.xls, то мы получаем на нее ссылку и выходим из цикла. Коллекция рабочих книг — это специальная коллекция, которая умеет производить поиск в себе по имени элементов, поэтому в принципе можно было обойтись такой строкой:

Set oMyWorkBook = Workbooks(«Сводка.xls»)

Но для многих других коллекций без конструкции For Each не обойтись.

Еще одна ситуация — когда мы не знаем точно, сколько раз должна быть выполнена та или другая команда — это зависит от какого-либо условия. Используются конструкции Do While…Loop и Do Until…Loop.

Конструкция Do While означает: выполнять какое-либо действие до тех пор, пока условие истинно:

Do While MyVar < 10

MyVar = MyVar + 1

MsgBox “ MyVar = “ & MyVar

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

Внимание! Если вы случайно запустили в своей программе бесконечный цикл, нажмите на клавиши +. Откроется окно, аналогичное представленному на рис

3.1, в котором вы сможете продолжить выполнение, завершить его или открыть ваш код в отладчике.

Рис. 3.1 Выполнение макроса остановлено по <Ctrl>+<Break>

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

Do Until MyVar >= 10

MyVar = MyVar + 1

MsgBox “ MyVar = “ & MyVar

Можно переписать цикл так, чтобы условие проверялось после завершения цикла:

MyVar = MyVar + 1

WScript.Echo “MyVar = “ & MyVar

Loop While MyVar < 10

В этом случае цикл будет выполнен по крайней мере один раз.

Немедленный выход из цикла можно произвести по команде Exit Do.

В VBA имеется также конструкция While … Wend. Это — еще один вариант цикла, который оставлен для обратной совместимости с первыми версиями Visual Basic. Функциональные возможности — те же, что и у конструкции Do…While:

Бесконечный цикл

Даже если вы никогда не писали код в своей жизни, я уверен, что вы слышали фразу «Бесконечный цикл». Это цикл, в котором условие никогда не будет выполнено. Обычно это происходит, когда вы забыли обновить счетчик.

Следующий код показывает бесконечный цикл

Dim cnt As Long
    cnt = 1

    'это бесконечный цикл
    Do While cnt <> 5

    Loop

В этом примере cnt установлен в 1, но он никогда не обновляется. Поэтому условие никогда не будет выполнено — cnt всегда будет меньше 5.

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

Dim cnt As Long
    cnt = 1

    Do While cnt <> 5
        cnt = cnt + 1
    Loop

Как вы можете видеть, использование For Loop безопаснее для подсчета, поскольку оно автоматически обновляет счет в цикле. Ниже приведен тот же цикл с использованием For.

Dim i As Long
    For i = 1 To 4

    Next i

Это явно лучший способ сделать это. Цикл For устанавливает начальное значение, условие и счет в одну строку.

Конечно, можно использовать бесконечный цикл, используя For — это потребует немного больше усилий

 Dim i As Long
    ' Бесконечный цикл
    For i = 1 To 4
        ' i никогда не достигнет 4
        i = 1
    Next i

Работа с бесконечным циклом

Когда у вас бесконечный цикл — VBA не выдаст ошибку. Ваш код будет продолжать работать, а редактор Visual Basic не будет отвечать.

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

Вы также можете выйти из цикла, убив процесс. Нажмите Ctrl + Shift + Esc. На вкладке Процессы найдите Excel / Microsoft Excel. Щелкните правой кнопкой мыши по этому и выберите «Завершить процесс». Это закроет Excel, и вы можете потерять часть работы — так что гораздо лучше использовать Ctrl + Break или его эквивалент.

Как остановить бесконечный цикл vba

имеется макрос (см ниже), который нормально работает, но остановить работу макроса получается только кнопкой Reset в редакторе VB или путем закрытия файла. Подскажите как его можно выключить?

Const ИмяФайла7 = «C:\Alex.txt» Const ИмяФайла8 = «C:\Alex1.txt»

Public РазмерФайла7 As Long, РазмерФайла8 As Long, ПоискИзмененийВременноОтключён As Boolean Const ВременнойИнтервалМеждуПроверками = 2

Public Sub СлежениеЗаФайлом() On Error Resume Next

Do While True ‘ бесконечный цикл If Not ПоискИзмененийВременноОтключён Then If ПоискИзмененийВременноОтключён Then Exit Sub

НовыйРазмерФайла7 = CreateObject(«scripting.filesystemo bject»).GetFile(ИмяФайла7).Size If НовыйРазмерФайла7 > РазмерФайла7 Then DoFile2 (ИмяФайла7): РазмерФайла7 = НовыйРазмерФайла7

НовыйРазмерФайла8 = CreateObject(«scripting.filesystemo bject»).GetFile(ИмяФайла8).Size If НовыйРазмерФайла8 > РазмерФайла8 Then DoFile1 (ИмяФайла8): РазмерФайла8 = НовыйРазмерФайла8

End If t = Timer: While t + ВременнойИнтервалМеждуПроверками > Timer: DoEvents: Wend Loop

Цикл For…Next

Самым распространенным циклом в VBA является цикл с перечислением For…Next. Этому циклу необходимо задать границы (начальное и конечное значения счетчика) в пределах которых будет изменяться переменная цикла.

Оператор цикла имеет следующий синтаксис:

For счетчик = Начальное Значение (например, Например, For $n = 1$)

То Конечное Значение (То 10)

Step Приращение (Step 2)

или

Next

Замечание 1

Здесь переменная — это счетчик, значение переменной увеличивается или уменьшается с каждым повторением цикла. Если в конструкции цикла отсутствует Step, то приращение равно 1 (по умолчанию).

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

  • в случае если значение счётчика меньше конечного значения, то выполняется выход из цикла;
  • в случае если значение счётчика больше конечного значения или равно ему, то выполняются операторы цикла и счётчик уменьшается на значение приращения.

Пример 1

Необходимо вычислить значение функции$ у=sin(x)$ при $x=2,4,6,8,10$ и вывести на экран.

Решение:

$Dim \ x \ As \ Integer, y \ As \ Single$

$For \ x = 2 \ To \ 10 \ Step \ 2$

$y = Sin(x)$

$MsgBox \ Str(y)$

$Next \ x$

Для досрочного выхода из оператора цикла, т.е. до достижения счетчиком конечного значения, в конструкцию цикла нужно ввести оператор Exit For.

С учетом Exit For оператор цикла имеет следующий синтаксис:

$For \ счетчик = Начальное \ Значение$ (например, Например, $For \ n = 1$)

То Конечное Значение (То 10)

Step Приращение (Step 2)

или

Exit For

Next

The Visual Basic Do While Loop

The Do While loop repeatedly executes a section of code while a specified condition continues to evaluate to True. This is shown in the following Sub procedure, where a Do While loop is used to print out all values of the Fibonacci Sequence until the current value is greater than 1,000:

Sub Fibonacci()

Dim i As Integer   Dim iFib As Integer   Dim iFib_Next As Integer   Dim iStep As Integer   

i = 1iFib_Next = 0
Do While iFib_Next < 1000

If i = 1 Then
iStep = 1iFib = 0
Else
iStep = iFibiFib = iFib_Next
End If

Cells(i, 1).Value = iFib
iFib_Next = iFib + iStepi = i + 1
Loop

End Sub

It can be seen that, in the above example, the condition iFib_Next < 1000 is tested at the start of the loop. Therefore, if the first value of iFib_Next were greater than 1,000, the loop would not be executed at all.

Another way that you can implement the Do While loop is to place the condition at the end of the loop instead of at the beginning. This causes the loop to be executed at least once, regardless of whether or not the condition initially evaluates to True.

The following code shows the form of a Do While Loop which has the condition at the end of the loop:

Do…
Loop While iFib_Next < 1000

Syntax

Exit Do Exit For Exit Function Exit Property Exit Sub

The Exit statement syntax has these forms:

Statement Description
Exit Do Provides a way to exit a Do. Loop statement. It can be used only inside a Do. Loop statement. Exit Do transfers control to the statement following the Loop statement. When used within nested Do. Loop statements, Exit Do transfers control to the loop that is one nested level above the loop where Exit Do occurs.
Exit For Provides a way to exit a For loop. It can be used only in a For. Next or For Each. Next loop. Exit For transfers control to the statement following the Next statement. When used within nested For loops, Exit For transfers control to the loop that is one nested level above the loop where Exit For occurs.
Exit Function Immediately exits the Function procedure in which it appears. Execution continues with the statement following the statement that called the Function.
Exit Property Immediately exits the Property procedure in which it appears. Execution continues with the statement following the statement that called the Property procedure.
Exit Sub Immediately exits the Sub procedure in which it appears. Execution continues with the statement following the statement that called the Sub procedure.

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

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

Цикл «For … Next»

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

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

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

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

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

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

Цикл «For Each»

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

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

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

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

Циклы в VBA Access

И как Вы поняли, начнем мы с циклов, и если конкретней, то с небольшой теории.

Цикл – это действия (инструкции), которые повторяются неоднократно, и прекращают свое выполнение в зависимости от условий или просто выполняются заданное количество раз.

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

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

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

For счетчик=начальное значение счетчика to конечное значение счетчика
  Инструкции
  Step (шаг итерации)
  Exit for (выход из цикла до срочно)
Next (следующая итерация)

А теперь давайте приведем пару простых примеров для понимания, откроем Access создадим форму, добавим элемент управления «кнопка» и в обработчик события «Нажатия кнопки» вставим следующий код (предполагается, что данные действия Вы уже должны уметь, если нет то вот скриншот):

Код:

'Переменные
Dim cnt As Integer
Dim i As Integer
Dim rezult As Integer
'Задаем количество, столько раз будет выполняться цикл
cnt = 10
rezult = 0
'Сам цикл
For i = 1 To cnt
    rezult = rezult + 1
Next
'Просто сообщение о результате выполнения цикла
MsgBox "Цикл выполнился " & rezult & " раз"

Это самый простой пример, когда мы сами указали сколько раз будет выполняться наш цикл, результат будет 10 раз, теперь давайте приведем пример чуть посложней:

'Переменные
Dim cnt As Integer
Dim i As Integer
Dim rezult As Integer
'Задаем количество, столько раз будет выполняться цикл
cnt = 10
rezult = 0
'Сам цикл
For i = 1 To cnt Step 2
    'Если i больше 5, то выходим из цикла
    If i > 5 Then
        Exit For
    End If
    rezult = rezult + 1
Next
'Просто сообщение о результате выполнения цикла
MsgBox "Цикл выполнился " & rezult & " раз"

Догадайтесь сколько раз выполнится цикл? Ответ 3 раза, потому что мы указали шаг равным 2, и еще тогда когда i стало больше 5, мы завершили цикл, т.е.

Первая итерация

i = 1

result = 1

Вторая итерация

i = 3

result = 2

Третья итерация

i = 5

result = 3

Четвертая итерация

i = 7

и вот тут мы вышли из цикла

Надеюсь понятно:)

Цикл do while ……loop – это цикл выполняется до тех пор, пока соблюдается определенное условие, которое в свою очередь проверяется до начала итерации, другими словами цикл может и не начаться, если условие сразу не выполняется.

Синтаксис:

do while условие
инструкции
exit do (Выход из цикла по дополнительному условию)
loop (переход к следующей итерации)

пример:

Dim cnt As Integer
Dim rezult As Integer
cnt = 1
rezult = 0
Do While cnt < 10
If rezult > 5 Then
    Exit Do
End If
rezult = rezult + 1
cnt = cnt + 1
Loop
MsgBox "Цикл выполнился " & rezult & " раз"

Здесь мы входим в цикл и сразу проверяем cnt у нас меньше 10 и если да то выполняем блок инструкций, в которых у нас стоит еще одно условие, если result стал больше 5, то просто выходим из цикла. Результат в этом случае будет 6 раз, и в этом случае мы вышли из цикла через Exit Do.

Цикл do….. loop while – это цикл выполняется до тех пор, пока соблюдается определенное условие, а вот в этой разновидности циклов условие проверяется после выполнения первой итерации, и здесь хоть одна итерация да выполнится.

Пример:

Dim cnt As Integer
Dim rezult As Integer
cnt = 1
rezult = 0
Do
If rezult > 5 Then
    Exit Do
End If
rezult = rezult + 1
cnt = cnt + 1
Loop While cnt < 5
MsgBox "Цикл выполнился " & rezult & " раз"

Это практически такой же пример, как и предыдущий только условие проверяется после выполнения операторов в теле цикла, и для того чтобы выйти из цикла по основному условию, я  изменил условие на cnt<5 и именно по этому условию мы вышли из цикла, так как когда переменная cnt достигла значения пяти то переменная rezul оставалась со значение 4, это кстати и результат.

Также существуют циклы:

Do until…..loop – цикл выполняется до тех пор пока условие не выполняется, а когда условие выполнится то произойдет завершение цикла. Проверка осуществляется до начала цикла.

Синтаксис:

Do until условие
инструкции
exit do (Выход из цикла по дополнительному условию)
loop (переход к следующей итерации)

Do ….. until loop – тот же самый цикл только проверка осуществляется после выполнения блока инструкций.

Синтаксис:

Do 
инструкции
exit do (Выход из цикла по дополнительному условию)
loop until условие 
Понравилась статья? Поделиться с друзьями:
Самоучитель Брин Гвелл
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: