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

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

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

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

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

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

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

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

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

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

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

Private Sub 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 = b
End Sub
 
Private Sub UserForm_Initialize()
    Label1.Caption = ""
    Label1.FontSize = 14
    Label1.ForeColor = vbBlue
 
    Label2.Caption = ""
    Label2.FontSize = 14
    Label2.ForeColor = vbRed
 
    CommandButton1.Caption = "Значения"
End Sub

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

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

Private Sub 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 = "Обратный порядок: " & SummB
End Sub

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

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

Private Sub 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 Then Exit For
        Next j
    Next i
 
    Label1.Caption = "Сумма без условия: " & SummA
    Label2.Caption = "Сумма с условием: " & SummB
End Sub

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

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

Private Sub CommandButton1_Click()
Const a = -2, b = 6, c = 20
Dim 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
        End If
    Next x
 
    Label1.Caption = "х ровно : " & res
End Sub

В данном примере мы объявили три константы 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, который используется для обработки коллекций, там же мы рассмотрим и сами коллекции.

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