Next element

Следует помнить следующие ограничения при использовании цикла For Each…Next. Для наборов параметр element может быть только переменной типа variant, общей переменной типа object или объектом, перечисленным в Object Browser. Для массивов параметр element может быть только переменной типа Variant. Нельзя использовать цикл For Each…Next с массивом, имеющим определенный пользователем тип, так как переменная типа variant не может содержать значение определенного пользователем типа.

Do...Loop

Цикл Do…Loop применяется для выполнения блока операторов неограниченное число раз. Существует несколько разновидностей конструкции Do…Loop, но каждая из них вычисляет выражение-условие, чтобы определить момент выхода из цикла. Как и в случае конструкции If…Then условие должно быть величиной или выражением, принимающими значение False (нуль) или True (не нуль).

В следующей конструкции Do…Loop операторы выполняются до тех пор, пока значением условия является True (Истина):

Do While [условие]

Операторы

Loop

Выполняя этот цикл, VBA сначала проверяет условие. Если условие ложно (False), он пропускает все операторы цикла. Если оно истинно (True), VBA выполняет операторы цикла, снова возвращается к оператору Do While и снова проверяет условие.

Следовательно, цикл, представленный данной конструкцией, может выполняться любое число раз, пока значением условия является не нуль или True (Истина). Отметим, что операторы тела цикла не выполняются ни разу, если при первой проверке условия оно оказывается ложным (False).

Пример. Вычислить сумму ряда с заданной точностью.

Sub пример4()

Dim e As Single, x As Single, s As Single

Dim m As Single, p As Single, i As Single

Call read("a1", x): Call read("b1", e)

s = 0: i = 1: m = 1: p = -1

Call out("a2", "i"): Call out("b2", "m"): Call out("c2", "s")

Do While Abs(m) >= e

p = -p * x

m = p / i

s = s + m

Call out("a" & (2 + i), i): Call out("b" & (2 + i), Abs(m)): Call out("c" & (2 + i), s)

i = i + 1

Loop

End Sub

Другая разновидность конструкции Do…Loop сначала выполняет операторы тела цикла, а затем проверяет условие после каждого выполнения. Эта разновидность гарантирует, что операторы тела цикла выполнятся по крайней мере один раз:

Do

Операторы

Loop

While [условие]

Две другие разновидности конструкции цикла аналогичны предыдущим, за исключением того, что цикл выполняется, пока условие ложно (False):

1) цикл не выполняется вообще или выполняется много раз:

Do Until [условие]

Операторы

Loop

2) цикл выполняется по крайней мере один раз:

Do


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: