Цикли в vba - vba програмування (office)

Повторення дій: цикли

Процес виконання всіх операторів, укладених в структуру циклу, один раз називається итерацией (iteration) циклу. Деякі структури циклу організовуються так, що вони завжди виконуються задану кількість разів. Структури циклу, завжди виконуються задану кількість разів, називаються циклами з фіксованим числом ітерацій (fixed iteration). Інші типи структур циклу повторюються змінну кількість разів в залежності від деякого набору умов. Оскільки кількість разів повторень цих гнучких структур циклу є невизначеним, такі цикли називаються невизначеними циклами (indefinite loops).

Існують два основні способи створення невизначеного циклу. Можна побудувати цикл так, що VBA буде тестувати деякий умова (детермінант циклу) перед виконанням циклу. Якщо умова для повторення циклу не дорівнює True, VBA пропускає всі оператори в циклі. Можна також побудувати цикл таким чином, що VBA буде тестувати умова детермінанта циклу після виконання операторів в циклі.

Найпростішою структурою циклу є фіксований цикл. VBA надає дві різні структури фіксованого циклу: For ... Next і For Each ... Next. Обидві структури фіксованого циклу називаються циклами For, тому що вони завжди виконуються для (for) заданої кількості разів.

Використання циклу For ... Next

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

Цикл For ... Next повинен виглядати так:

For а = Start To End [Step StepSize]

де а - будь-яка чисельна змінна VBA, зазвичай змінна типу Integer або Long;

Start - будь чисельне вираження, визначає початкове значення для змінної а;

End - це також чисельне вираження, визначає кінцеве значення для змінної а.

За замовчуванням VBA збільшує змінну а на 1 кожен раз при виконанні операторів в циклі (рахує кількість циклів). Можна задавати інше значення (StepSize), на яке буде змінюватися а, включаючи необов'язкове ключове слово Step. При включенні ключового слова Step необхідно ставити значення для зміни змінної а.

Оператори представляють один, кілька або жодного оператора VBA. Ці оператори складають тіло циклу For; VBA виконує кожен з цих операторів кожен раз при виконанні циклу.

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

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

Цикл For Each ... Next

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

Цикл For Each ... Next повинен виглядати так:

For each а in група

де а - це змінна, яка використовується для ітерації по всіх елементах в певній групі;

група - це об'єкт колекції або масив. Якщо група - це об'єкт колекції, то а повинна бути змінної типу variant, object або заданим об'єктним типом, таким як range, worksheet, document, paragraph і так далі

Якщо група - це масив, то а повинна бути змінної типу variant;

оператори - один, кілька або жодного оператора VBA, що складають тіло циклу.

Додаткова інформація по темі

Практичне застосування мови програмування Visual Basic for Application (VBA) з додатками Microsoft Word і Excel

Щоб покращувати свій сайт, потрібно обробляти сторінки з помилками, в статті розглядається кожен тип помилки

Опис основних методів (підкласів) для новітнього мови програмування Ruby - аргументування

Коротка довідка про правильне використання масивів в мові програмування Ruby

Схожі статті