End Sub
Next i
Next
В роли счетчика количества повторений в цикле может выступать любая переменная числового типа. Приращение может быть как положительным, так и отрицательным числом. Если приращение равно единице, то конструкция Step может быть опущена. Если приращение отрицательно, то начальное значение, естественно, должно быть больше конечного.
Циклы Do...Loop
Циклы Do...Loop используются в тех случаях, когда заранее неизвестно, сколько раз должна выполняться расположенная в теле цикла группа операторов. Такой цикл продолжает работу до тех пор, пока не будет выполнено определенное условие. Существуют 4 типа операторов цикла Do...Loop:
1) Цикл с ключевым словом While продолжает свою работу, пока условие остается истинным, т. е. пока условие выполняется, и задается в двух вариантах, представленных ниже.
Do While <условие> <операторы > Loop | Условие проверяется до того, как выполняется группа операторов, образующих тело цикла. |
Do <операторы> Loop While <условие> | Условие проверяется после того, как операторы, составляющие тело цикла, будут выполнены хотя бы один раз. |
2) Цикл с ключевым словом Until продолжает свою работу, пока условие является ложным, т. е. условие не выполняется, и задается в двух вариантах, представленных ниже.
Do Until <условие> <операторы> Loop | Условие проверяется до того, как выполняется группа операторов, образующих тело цикла. |
Do <операторы> Loop Until <условие> | Условие проверяется после того, как операторы, составляющие тело цикла, будут выполнены хотя бы один раз. |
Если условие постоянно будет ложно, то программа зациклится. Чтобы этого не произошло, значения переменных, входящих в условие, должны изменяться в теле цикла. Если произошло зацикливание (зависание машины), надо прервать программу нажатием Ctrl + Break и исправить ошибку.
Пример 3. Пусть нужно вычислить значение q по формуле: для z={1; 4; 7,5; 9; 15}и a =3, а также для значений z = 0 (0,5) 5. Ввод исходных данных должен осуществляться из ячеек рабочего листа. Вывод результатов надо организовать в ячейки на рабочем листе Excel.
Составим две процедуры. Первую с использованием оператора цикла For...Next и вторую с использованием оператора цикла Do...Loop. Для решения задачи оформим рабочий лист согласно образцу (рис. 5.2).
Для кнопки «Расчет For ... Next»составим следующую процедуру:
Private Sub CommandButton1_Click()
a = 3
j = 18' j − это номер строки, в которую введено первое значение z
For i = 1 To 5 ‘счетчик количества значений переменной z
z = Worksheets("Лист4").Cells(j, 2)
q = Sqr(z ^ 2 + 8 * a) * Log(z + 0.5)
Worksheets("Лист4").Cells(j, 3) = q
j = j + 1
Рис. 5.2. Образец оформления рабочего листа для примера 3
Для кнопки «Расчет Do...Loop» процедура может иметь вид:
Private Sub CommandButton2_Click()
a = 3 : j = 18 : z = 1
Do While z <= 5
q = Sqr(z ^ 2 + 8 * a) * Log(z + 0.5)
Worksheets("Лист4").Cells(j, 8) = q
z = z + 0.5
j = j + 1