цикли vba

Будь-які дії процедури повторюються задану кількість разів або поки виконується або не виконується деяка умова називають циклом.

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

Структури циклу, завжди виконуються задану кількість разів, називаються циклами з фіксованим числом ітерацій. Інші типи структур циклу повторюються змінну кількість разів в залежності від деякого набору умов. Такі цикли називаються невизначеними циклами.

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

Найпростішою структурою циклу є фіксований цикл.

цикл For..Next


Counter - будь-яка чисельна змінна VBA
Start - будь чисельне вираження. визначає початкове значення для змінної counter
End - чисельне вираження, визначає кінцеве значення для змінної counter
Statements - один, кілька або жодного оператора VBA (тіло циклу).

За замовчуванням VBA збільшує змінну counter на 1 кожен раз при виконанні операторів в циклі. Можна задати інше значення (SterSize - будь чисельне вираження), на яке буде змінюватися counter.

Ключове слово Next повідомляє VBA про те, що досягнутий кінець циклу. Необов'язкова змінна counter після ключового слова Next повинна бути тієї ж самої змінної counter. яка була задана після ключового слова For на початку структури циклу.

Нижче представлений лістинг найпростішого циклу For..Next. який вважає суму цифр від 1 до 10:

цикли vba

А тепер два варіанти циклу For..Next з використанням кроку циклу відмінного від одиниці:

цикли vba

Зверніть увагу! При зменшенні лічильника циклу For..Next цикл виконується, поки змінна лічильника більше або дорівнює кінцевому значенню, а коли лічильник циклу збільшується, цикл виконується, поки змінна лічильника менше або дорівнює кінцевому значенню.

Цикл For Each..Next

Цикл For Each..Next не використовує лічильник Цилка. Цикли For Each..Next виконуються стільки разів, скільки є елементів в певній групі, такий як колекція об'єктів або масив (які будуть розглядатися пізніше). Простіше кажучи, цикл For Each..Next виконується один раз для кожного елемента в групі.


For Each Element In Group
Statements
Next [Element]


Element - змінна, яка використовується для ітерації по всіх елементах в певній групі
Group - це об'єкт колекції або масив
Statements - один, кілька або жодного оператора VBA (тіло циклу).

Цикл For Each..Next завжди виконується стільки разів, скільки є елементів в певній групі.

У наведеному нижче лістингу показана функція SheetExists, що використовує цикл For Each..Next для визначення того, чи існує певний лист в робочій книзі Excel:

цикли vba