Петлі VBA Excel

Петлі можна вважати найкращим функціонуючим компонентом VBA, а також можна вважати серцем Макросів. Зазвичай вони допомагають вам зменшити кількість рядків у вашому коді та виконати роботу за лічені хвилини, що може зайняти людину години.

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

Якщо ви раніше не використовували сценарій VBA, ви можете просто відкрити робочу книгу Excel і натиснути Alt + F11 . Це відкриє проект VBA.

Давайте заглибимося всередину.

Припустимо, ми хотіли надрукувати від 1 до 10 номерів одним знімком. Ми можемо це зробити за допомогою наступного коду.

Код:

 Sub loop1 () Debug.Print 1 Debug.Print 2 Debug.Print 3 Debug.Print 4 Debug.Print 5 Debug.Print 6 Debug.Print 7 Debug.Print 8 Debug.Print 9 Debug.Print 10 End Sub 

Якщо ви можете швидко отримати код, я додав Debug.Print по черзі для друку чисел від 1 до 10. Після запуску коду ми можемо побачити вихід у «Негайне вікно». Щоб відкрити негайне вікно, натисніть Ctrl + G в будь-якій точці Excel.

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

Типи циклів VBA в Excel

Будучи програмістом, ви ніколи не захочете писати повторювані рядки, які ось-ось дадуть той самий результат. Ви хотіли б його автоматизувати. Отже, ми побачимо різні цикли VBA Excel та як їх використовувати за допомогою деяких прикладів.

Тип №1 - VBA для наступного циклу

Для циклу Next VBA можна провести цикл через діапазон комірок і виконати те саме завдання для кожної комірки, зазначеної в циклі. Тут потрібно вказати початковий номер та кінцевий номер.

код:

 Підключення1 () Для i = від 1 до 10 комірок (i, 1) .Value = i Next i End Sub 

Цей код дає точно такий же вихід, як і попередній. Однак найзначніше в цьому коді - скорочення ряду рядків. Ми звели 12-рядковий код до просто коду з 5 рядками.

У цьому коді loop1 - назва макросу. Цикл for починається з i = 1, він друкує значення i (тобто 1) під коміткою excel, а в Next, він знову переходить до початку циклу for і робить i = 2 друкує значення i (тобто 2) в наступній комірці і так далі, поки код не досяг останнього значення, тобто 10. Як тільки код досягне останнього значення i (10), код сам припиняється через відсутність будь-якого цілого значення вище 10.

Запустіть код за допомогою клавіші F5 або вручну. Таким чином, ви можете бачити вихід, як показано нижче.

Тип №2 - VBA для циклу із кроком вперед

Як ви бачили в попередньому прикладі циклу, у мене було збільшення на 1 крок. За замовчуванням значення кроку вважається 1 у VBA. Однак чи можна встановити свій крок? Припустимо, ви хочете бачити лише парні числа від 1 до 20. Як це можна зробити?

Як підказує загальна математика, числа, які знаходяться на відстані 2 один від одного (Починаючи з першого парного числа 2), вважаються парними числами, правда?

Ми застосуємо ту саму логіку. Дивіться нижче код для довідки.

Код:

 Sub ForwardStep () Для i = від 2 до 20 крок 2 комірок (i, 1) .Value = i Next i End Sub 

Для значень, що починаються з 2, цей цикл дозволяє надрукувати 2, 4, 6, 8… 20 у наступних осередках Excel. Крок 2 явно вказав, що, починаючи з числа 2, код перейде на наступне число з кроком 2 (тобто 4 буде надруковано) тощо. Цей процес триватиме до тих пір, поки в клітині не відбудеться 20. Як тільки 20 виявиться в комірці, цикл припиняється автоматично.

Запустіть код за допомогою клавіші F5 або вручну. Таким чином, ви можете бачити вихід, як показано нижче.

Тип №3 - VBA для циклу із кроком назад

Так само, як і для циклу з кроком вперед, ми можемо використовувати для циклу з кроком назад. Наприклад, що робити, якщо ми встановимо наш крок назад як -2 і запустимо цикл a для значень 20 до 2?

Ми побачимо, як це працює.

код:

 Sub BackwardStep () Для i = 20 - 2 крок -2 Debug.Print i Next i End Sub 

Після запуску коду ми можемо побачити висновок у «Негайному вікні». Щоб відкрити негайне вікно, натисніть Ctrl + G в будь-якій точці Excel.

Оскільки ми задали початкову точку циклу як 20 і кінцеву точку як 2 з кроком -2, цикл починається з 20 і на кроці -2 переходить до наступного числа, яке становить -18 і так далі. Як тільки цикл досягне значення 2, він автоматично припиняється, а останнє значення буде надруковано як 2.

Тип №4 - VBA вкладена для циклу

Ми також можемо встановити цикл Nest дляFor. Однак не рекомендується робити введення одного і того ж циклу більше ніж тричі в коді (це може вважатися помилкою в логіці).

Будь ласка, дивіться нижче код для вкладеного циклу.

Код:

 Sub NestedFor () Для i = 1 до 10 Для j = 1 до 2 комірок (i, j) .Value = i * j Далі j Далі i Кінець Sub 

У цьому прикладі при i = 1 і j = 1 макрос ставить значення i * j (1 * 1) у перетин рядка i = 1 та стовпця j = 1 (тобто комірка A1) і переходить до наступного значення j (2), зберігаючи i = 1. У перетин рядка i = 1 та стовпця j = 2 (тобто комірка B1) макрос вводить значення I * j (1 * 2). Цикл ігнорує наступне значення j, оскільки j змінюється лише від 1 до 2 і переходить до наступного значення i.

Для i = 2 та j = 1 макрос вводить значення i * j (2 * 1) у перетин 2- го ряду та 1- го стовпця (тобто клітинку A2) та продовжує. Поки діапазон i і j.

Запустіть код за допомогою клавіші F5 або вручну, як показано на скріншоті нижче. Таким чином, ви можете бачити вихід, як показано нижче.

Тип №5 - VBA Робіть цикл

Do while петля - одна з найцікавіших циклів у VBA. Це дозволяє вам перевірити умову і записати вихід (DO), коли певна умова або набір умов виконані (або умова / с є / є ПРАВИЛЬНИМ).

Дивіться код нижче:

Код:

 Sub do_getherloop () Dim i As Integer i = 1 Do while i <= 10 комірок (i, 1) .Value = i * ii = i + 1 Кінець циклу Sub 

Цей цикл працює як нижче:

Для значень i від 1 (спочатку i = 1) до 10 він обчислює, i * i (тобто квадратне значення для кожного цілого значення i) і вводить його під комірку 1 до 10 відповідно. Вихід - це не що інше, як квадратні значення цілих чисел від 1 до 10. Будь ласка, уважно подивіться на цикл під цим кодом. Обов’язково додайте його, інакше система видасть помилку.

Запустіть код за допомогою клавіші F5 або вручну. Таким чином, ви можете бачити вихід, як показано нижче.

Ось кілька прикладів циклу VBA, про які я спробував подбати в цій статті. Сподіваюся, це буде досить точним, щоб очистити деякі поняття.

Що потрібно пам’ятати

  • Використовуючи цикл із зворотним кроком, переконайтеся, що ваш початковий номер повинен бути більшим за ваш кінцевий номер, і навпаки.
  • У розділі "Доки цикл" переконайтеся, що ви використовуєте цикл, щоб закрити завдання, перш ніж закінчувати весь код VBA. В іншому випадку система видає помилку компілятора із повідомленням про помилку "Без без циклу".

Ви можете завантажити цей шаблон Excel Loops Excel тут - шаблон VBA Loops Excel

Рекомендовані статті

Це був посібник для циклів Excel VBA. Тут ми обговорили типи циклів VBA Excel та способи їх використання разом з деякими практичними прикладами та шаблоном Excel, який можна завантажити. Ви також можете ознайомитися з іншими запропонованими нами статтями -

  1. Функція VBA в Excel
  2. Функція VBA VLOOKUP
  3. Комбінації клавіш Excel
  4. Excel Percentile Formula

Категорія: