Доброго вам дня! Дану статтю я вирішив присвятити рубриці з основ програмування в Visual Basic for Application. І сьогодні ми поговоримо про циклах в VBA, розберемо їх синтаксис і розглянемо кілька прикладів, які часто зустрічаються програмісту.
Спочатку нагадаю, що цикл - процес повторення частини коду, що виконується, поки не буде виконано або порушено заданий нами умову.
У даній статті ми розберемо синтаксис і приклади таких циклів в VBA:
Цикл For в VBA
Цикл for в VBA зазвичай використовується при зациклення фрагмента коду, якщо нам відомо кінцеве значення counter - лічильника, при якому ми вийдемо з циклу.
Візьмемо для прикладу найпоширеніший приклад:
Згенерувати масив з 5 цілих значень
VBA для циклу for дає можливість використовувати функцію Step. Як зрозуміло з перекладу, це крок, з яким ми будемо проходити наш інтервал. За замовчуванням, він дорівнює 1. Популярний варіант використання зустрічається у випадках, коли counter пов'язаний зі змінною, що використовується всередині циклу. Наприклад, при написанні програм, пов'язаних з функціями.
Знайти перетин графіка функції y = 5 * x + 5 з віссю ординат
Тепер уявімо, що у нас досить великий діапазон і ми не хочемо змушувати комп'ютер вважати зайві ітерації. На цей випадок існує команда Exit For. Перепишемо наш останній приклад з новою командою.
C допомогою команди Exit можна закінчити виконання будь-якого циклу в VBA. Досить вказати після Exit назва використовуваного циклу. Також їм можливо завершити роботу будь-якої процедури або функції.
Цикл For Each в VBA
For Each в VBA заснований на переборі всіх елементів певного типу в масиві, об'єкті або групі.
Найпопулярніший варіант його використання - перебір сторінок в робочій книзі.
Вивести назви всіх листів в робочій книзі
І ще один цікавий приклад:
Змінити розмір шрифту і вирівняти по центру текст в label
Тут слід розуміти, що через Controls можна звернутися до будь-якого елементу форми. Якщо відфільтрувати по імені, наприклад, як ми зробили вище, то можна виділити групи елементів і змінити їх властивості. В даному випадку, розмір шрифту і вирівнювання.
Цикл While в VBA
Цикли в VBA, які використовують структуру Do..Loop (це while і until цикли) можна записувати з різним розташуванням фрагмента умови. Як бачите на зображенні вище, умова може перевірятися після виконання однієї ітерації, а може перед запуском циклу.
Найпопулярніший приклад:
Відсортуйте по зростанню згенерований масив методом бульбашки
У вищевказаному прикладі ми відсортували масив з рандомних значеннями в порядку зростання. Метод бульбашки вважається досить довгим, але простим в реалізації. В основному, їм сортують невеликі числові масиви.
Цикл Until в VBA
Як бачите, відмінності від while вкрай несуттєві. Цикл Until в VBA можна реалізувати за допомогою конструкції while NOT (condition). Проте, наведу приклад:
Змусити користувача ввести число
Чому змусити? Тому, що якщо користувач закриє вікно введення, це його не врятує, воно буде з'являтися знову і знову поки він не введе будь-яке число.