Урок 9 по VBA — Цикл for next

Урок 9 по VBA — Цикл for next Макросы на VBA

Оператор цикла for next VBA языка используется для выполнения блока операторов фиксированное количество раз, чаще всего данный цикл применяется при обработке массивов. Цикл for next является в своей сфере самым простым, тут задается начальное и конечное значение, а также, можно задать шаг счетчика.

Давайте рассмотрим общий синтаксис:

For счетчик = начало To конец [Step шаг]
Операторы
Next счетчик

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

Начало – начальное значение счетчика, является числовым выражением

Конец – конечное значение счетчика, числовое выражение, которое задает количество проходов.

Шаг – необязательный параметр, который позволяет задавать шаг выполнения. Если данный параметр отсутствует, то увеличение счетчика при каждом проходе равно единице. Использование шага актуально в том случае, если нужно методом перебора решить уравнение, так, можно задать начальное значение 1, конечное 3 и шаг в 0,2.

В самом конце цикла можно и не указывать имя переменной (счетчик), но это актуально, если используется вложенный цикл for, это позволит сделать код более читабельным.

Для примера, создайте форму с двумя текстовыми метками и одной кнопкой, в редакторе кода пропишите:

PrivateSub CommandButton1_Click()Dim i, j, a, b    For i = 1 To 10 Step 2        a = a & i & " "    Next i     For j = 1 To 10 Step 3        b = b & j & " "    Next j    Label1.Caption = a    Label2.Caption = bEndSub PrivateSub UserForm_Initialize()    Label1.Caption = ""    Label1.FontSize = 14    Label1.ForeColor = vbBlue     Label2.Caption = ""    Label2.FontSize = 14    Label2.ForeColor = vbRed     CommandButton1.Caption = "Значения"EndSub

В данном примере, у нас есть два параметра цикла VBA, в каждом заданы одинаковые начальные и конечные значения, но, в первом задан шаг 2, а во втором – 3.

В параметре Шаг можно указать и отрицательное значение, в этом случае будет происходить прирост счетчика в обратном порядке, например:

PrivateSub CommandButton1_Click()Dim i, j, SummA, SummB    For i = 1 To 10        SummA = SummA + i    Next     For j = 10 To 1 Step -1        SummB = SummB + j    Next    Label1.Caption = "Прямой порядок: " & SummA    Label2.Caption = "Обратный порядок: " & SummBEndSub

Тут мы вычисляем сумму чисел от 1 до 10 при прямом и обратном порядке.

Довольно часто при использовании оператора цикла for next VBA языка может возникнуть ситуация, когда при заданном условии надо прекратить перебор данных, в этом случае используется выражение Exit For, например:

PrivateSub CommandButton1_Click()Dim i, j, SummA, SummB    For i = 1 To 100        For j = 1 To 100            SummA = SummA + i        Next j    Next i     For i = 1 To 100        For j = 1 To 100            SummB = SummB + i            If SummB > 10000 ThenExitFor        Next j    Next i     Label1.Caption = "Сумма без условия: " & SummA    Label2.Caption = "Сумма с условием: " & SummBEndSub

В данном примере используется вложенный цикл VBA for next. В первом случае происходит суммирование чисел от 1 до 100, при этом суммирование повторяется 100 раз. Во втором случае мы прописали условие с помощью условного оператора if – если сумма больше 10 тысяч, то произвести выход из цикла.

Хорошо, теперь попробуем написать более практичный пример – решение квадратного уравнения методом перебора:

PrivateSub CommandButton1_Click()Const a = -2, b = 6, c = 20Dim x, result, res    For x = -10 To 10 Step 0.5     result = a * (x * x) + b * x + c     If result = 0 Then        res = res & " " & x        EndIf    Next x     Label1.Caption = "х ровно : " & resEndSub

В данном примере мы объявили три константы a, b и с, со значениями -2, 6 и 20, это параметры квадратного уравнения (a*x*x + b*x + c = 0). В цикле происходит изменение переменной х в диапазоне от -10 до 10 с шагом в 0,5. При каждой итерации происходит проверка условия на равенство нулю, если условие выполняется, в переменную res записывается значение переменной x. В итоге, уравнение будет иметь два решения: -2 и 5.

И так, в этой статье мы рассмотрели цикл for next языка VBA, который применяется для обработки заданного количества раз одних и тех же действий, в следующей статье мы рассмотрим цикл for each, который используется для обработки коллекций, там же мы рассмотрим и сами коллекции.

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий