For Next VBA

Оператор For…Next в VBA. Урок №29

Оператор For Next відноситься до операторів циклів. З його допомогою блок операторів може виконуватися певну кількість разів. Ця кількість повторень вказується до початку виконання циклу.

Синтаксис For…Next в VBA

For счётчик = початок To кінець[Step крок]
(блок операторів, які мають виконуватися при кожному проході циклу)
Next лічильник

Тут,

  • лічильник (лічильник циклу) – це будь-яка числова змінна, яка зберігає в собі кількість виконаних проходів циклу.
  • початок – це числовий вираз, який задає початкове значення лічильника для визначення кількості проходів циклу.
  • кінець – числовий вираз, що задає кінцеве значення лічильника для визначення кількості проходів циклу.
  • крок – числовий вираз, який зберігає в собі число, на яке збільшуватиметься лічильник при кожному проході циклу.

Step (крок) є необов'язковим елементом конструкції. За замовчуванням, якщо не вказувати в конструкції Step (крок), то інтерпретатор VBA при кожному виконанні блоку операторів збільшуватиме лічильник на 1. Якщо ж вам потрібно змінити той стандартний крок, то потрібно вказувати Step.

Давайте напишемо перший приклад програми з циклом For … Next і покроково розберемо її виконання.

Приклад For … Next

Sub myCode()
    Dim myNum As String
    For a = 1 To 12
        myNum = myNum & a & Chr(13)
    Next a
    
    MsgBox "Виводимо послідовність чисел від 1 до 12:" & Chr(13) & myNum
End Sub

Результат

for next vba

У цьому прикладі:

  1. Перший рядок Sub myCode() – це назва нашої процедури (програми).
  2. Другий рядок Dim myNum As String – оголошення рядкової змінної myNum.
  3. Третій рядок For a = 1 To 12 – початок нашого циклу. Тут вираз a = 1 є лічильником. А 12 – це кінець циклу.
  4. Четвертий рядок – це оператори, які потрібно виконувати при кожному проході по циклу.
  5. П'ятий рядок Next a – говорить про те, що управління має бути повернено на початок циклу. Виконання програми продовжується з порівняння поточного значення змінної a (це значення вже дорівнює 2, а не 1) зі значенням параметра кінець (який нагадаю, дорівнює 12). І так відбуватиметься доти, поки значення змінної a не стане більше 12. Коли a буде більше 12, програма продовжить своє виконання з оператора, який слідує за оператором Next. Тобто, буде виведено повідомлення MsgBox.
  6. Шостий рядок End Sub – кінець нашої процедури (програми).

Давайте розглянемо ще один приклад використання циклу For … Next у якому ми виведемо у повідомленні лише непарні цифри.

Приклад циклу For … Next з елементом Step

Sub myCode()
    Dim myNum As String
    For a = 1 To 12 Step 2
        myNum = myNum & a & Chr(13)
    Next a
    
    MsgBox "Виводимо послідовність чисел від 1 до 12:" & Chr(13) & myNum
End Sub

Результат

цикл for next vba

У цьому прикладі ми додали крок рівний 2. Тобто при проході циклу, змінна a збільшується на 2 і таким чином ми отримуємо вивід у повідомленні лише непарних цифр: 1, 3, 5, 7, 9, 11.

Цикл For … Next з дробовим значенням збільшення лічильника

Числове значення після ключового слова Step може бути як цілим, так і дробовим. Але якщо ви вирішили використовувати дробове число для збільшення кроку циклу, то змінна лічильника теж повинна мати тип числа з плаваючою точкою.

Приклад коду

Sub myCode()
    Dim myNum As String
    Dim a As Single
    b = 0
    For a = 1.609344 To 10 Step 1.609344
        b = b + 1
        myNum = myNum & b & " km" & " = " & a & " миль" & Chr(13)
    Next a
    
    MsgBox "Переводимо кілометри в милі:" & Chr(13) & myNum
End Sub

Результат

цикл vba

Цикл For … Next зі зменшенням значення лічильника

Іноді, може виникнути потреба записати цикл зі зменшенням значення лічильника. У такому випадку після оператора Step вказують від'ємне число.

Використовуючи такий спосіб створення циклу, потрібно пам'ятати, що значення параметра початок має бути більшим, ніж значення параметра кінець і цикл закінчить своє виконання тоді, коли значення змінної лічильник стане меншим за значення параметра кінець.

Приклад коду

Sub myCode()
    Dim myNum As String
    For a = 1 To -10 Step -1
        myNum = myNum & a & Chr(13)
    Next a
    
    MsgBox "Це послідовність цифр із негативним кроком:" & Chr(13) & myNum
End Sub

Результат

циклы в vba

Вкладені цикли For … Next

В одній і тій самій процедурі, цикли For … Next можна використовувати необмежену кількість разів. При необхідності їх можна вкладати один в інший.

Приклад коду

Sub myCode()
    myNum = 0
    For x = 1 To 5
        For y = 1 To 5
            Cells(x, y).Value = myNum
        Next y
    Next x
End Sub

Результат

цикл excel vba

У цьому прикладі ми заповнюємо в Excel комірки перших п'яти стовпців і перших п'яти рядків цифрою 0.

Якщо ви самостійно не розібралися як працює цей код, то ось опис послідовності виконання операцій в ньому:

  1. Змінній myNum присвоюється значення 0. Ця цифра буде вставлятися в комірки.
  2. Починається перший (зовнішній) цикл For … Next. На першому проході по циклу, значення змінної x = 1.
  3. Виконується вкладений цикл For … Next. Відбувається 5 проходів циклу, у ході яких змінна y збільшується на 1 при кожному проході циклу.
  4. Завершується внутрішній цикл.
  5. Перший (зовнішній) цикл робить ще 4 проходи, що залишилися.

Таким чином спочатку повністю виконується вкладений цикл, а потім вже зовнішній.

Негайний вихід з циклу за допомогою Exit For

Іноді виникає необхідність негайно припинити виконання циклу For … Next ще до того, як змінна лічильник досягне заданого кінцевого значення. Це робиться за допомогою оператора Exit For.

Негайний вихід із циклу дуже зручно використовувати під час перевірки масивів на наявність неприпустимих значень. Наприклад, коли приходять якісь некоректні дані, виконання програми відразу припиняється.

Приклад коду

 Sub myCode()
    myNum = 0
    For x = 1 To 5
        Cells(x, 1).Value = myNum
        myNum = myNum + 1
        If myNum >= 2 Then
            MsgBox "Зупиняємо цикл, тому що значення змінної myNum більше або дорівнює 2"
            Exit For
        End If
    Next x
End Sub

Результат

урок vba

В одному циклі може бути записана будь-яка кількість операторів Exit For. Після виконання цього оператора програма відразу ж припиняє виконання циклу і переходить до операторів, які розташовані в тексті відразу після цього циклу.

Рекомендуємо

Сollaborator

Hosting Ukraine

Продукція та послуги

Main Menu