<
  • Главная
Статьи

цикли VBA

  1. Цикл For в VBA
  2. Цикл For Each в VBA
  3. Цикл While в VBA
  4. Цикл Until в VBA

Доброго часу доби! Дану статтю я вирішив присвятити рубриці з основ програмування в Visual Basic for Application. І сьогодні ми поговоримо про циклах в VBA, розберемо їх синтаксис і розглянемо кілька прикладів, які часто зустрічаються програмісту.

Спочатку нагадаю, що цикл - процес повторення частини коду, що виконується, поки не буде виконано або порушено заданий нами умову.

У даній статті ми розберемо синтаксис і приклади таких циклів в VBA:

Цикл For в VBA

Цикл for в VBA зазвичай використовується при зациклення фрагмента коду, якщо нам відомо кінцеве значення counter - лічильника, при якому ми вийдемо з циклу
Цикл for в VBA зазвичай використовується при зациклення фрагмента коду, якщо нам відомо кінцеве значення counter - лічильника, при якому ми вийдемо з циклу.
Візьмемо для прикладу найпоширеніший приклад:
Згенерувати масив з 5 цілих значень

Dim mas (5) As Integer For i% = 0 To 4 mas (i) = Int ((10 * Rnd) + 1) Next i

Зверніть вашу увагу, що в цьому прикладі використовується неявне оголошення при роботі з циклами в VBA. i% - означає неявне оголошення змінної i в форматі integer. Така конструкція по суті замінює наступну: dim i as integer. Це використовується для скорочення коду і для зручності написання і читання. У старих версіях VBA необхідно вказувати знак формату після кожного використання неявної змінної. У більш пізніх версіях достатньо всього один раз.

VBA для циклу for дає можливість використовувати функцію Step. Як зрозуміло з перекладу, це крок, з яким ми будемо проходити наш інтервал. За замовчуванням, він дорівнює 1. Популярний варіант використання зустрічається у випадках, коли counter пов'язаний зі змінною, що використовується всередині циклу. Наприклад, при написанні програм, пов'язаних з функціями.
Знайти перетин графіка функції y = 5 * x + 5 з віссю ординат

Function expr (x As Integer) As Integer expr = 5 * x + 5 End Function Sub CodeTown () Dim i As Integer For i = - 10 To 10 Step 1 If expr (i) = 0 Then MsgBox "При Y = 0, Х = "+ CStr (i) Next i End Sub

Тепер уявімо, що у нас досить великий діапазон і ми не хочемо змушувати комп'ютер вважати зайві ітерації. На цей випадок існує команда Exit For. Перепишемо наш останній приклад з новою командою.

Function expr (x As Integer) As Integer expr = 5 * x + 5 End Function Sub CodeTown () Dim i As Integer For i = - 10 To 10 Step 1 If expr (i) = 0 Then MsgBox "При Y = 0, Х = "+ CStr (i) Exit For End If Next i End Sub

C допомогою команди Exit можна закінчити виконання будь-якого циклу в VBA. Досить вказати після Exit назва використовуваного циклу. Також їм можливо завершити роботу будь-якої процедури або функції.

Цикл For Each в VBA

For Each в VBA заснований на переборі всіх елементів певного типу в масиві, об'єкті або групі
For Each в VBA заснований на переборі всіх елементів певного типу в масиві, об'єкті або групі.
Найпопулярніший варіант його використання - перебір сторінок в робочій книзі.
Вивести назви всіх листів в робочій книзі

For Each ws In ThisWorkbook .Worksheets MsgBox ws. Name Next ws

І ще один цікавий приклад:
Змінити розмір шрифту і вирівняти по центру текст в label

For Each element In UserForm1 .Controls If InStr (1, UserForm1 .Controls .Item (i%). Name, "Label")> 0 Then UserForm1 .Controls .Item (i%) .TextAlign = fmTextAlignCenter UserForm1 .Controls .Item ( i%) .Font .Size = 20 i% = i% + 1 End If Next element

Тут слід розуміти, що через Controls можна звернутися до будь-якого елементу форми. Якщо відфільтрувати по імені, наприклад, як ми зробили вище, то можна виділити групи елементів і змінити їх властивості. В даному випадку, розмір шрифту і вирівнювання.

Цикл While в VBA

Цикли в VBA, які використовують структуру Do
Цикли в VBA, які використовують структуру Do..Loop (це while і until цикли) можна записувати з різним розташуванням фрагмента умови. Як бачите на зображенні вище, умова може перевірятися після виконання однієї ітерації, а може перед запуском циклу.
Найпопулярніший приклад:
Відсортуйте по зростанню згенерований масив методом бульбашки

Dim mas (5) As Integer For i% = 0 To 4 mas (i%) = Int ((10 * Rnd) + 1) Next i Dim count As Integer, temp As Integer count = 1 Do While count> 0 count = 0 For i% = 0 To 3 If mas (i)> mas (i + 1) Then temp = mas (i) mas (i) = mas (i + 1) mas (i + 1) = temp count = count + 1 End If Next i% Loop

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

Цикл Until в VBA

Як бачите, відмінності від while вкрай несуттєві
Як бачите, відмінності від while вкрай несуттєві. Цикл Until в VBA можна реалізувати за допомогою конструкції while NOT (condition). Проте, наведу приклад:
Змусити користувача ввести число

Dim temp As Variant Do temp = InputBox ( "Введіть число") Loop Until IsNumeric (temp)

Чому змусити? Тому, що якщо користувач закриє вікно введення, це його не врятує, воно буде з'являтися знову і знову поки він не введе будь-яке число.

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

схоже



Новости
  • Виртуальный хостинг

    Виртуальный хостинг. Возможности сервера распределяются в равной мере между всеми... 
    Читать полностью

  • Редизайн сайта

    Редизайн сайта – это полное либо частичное обновление дизайна существующего сайта.... 
    Читать полностью

  • Консалтинг, услуги контент-менеджера

    Сопровождение любых интернет ресурсов;- Знание HTML и CSS- Поиск и обновление контента;-... 
    Читать полностью

  • Трафик из соцсетей

    Сравнительно дешевый способ по сравнению с поисковым и контекстным видами раскрутки... 
    Читать полностью

  • Поисковая оптимизация

    Поисковая оптимизация (англ. search engine optimization, SEO) — поднятие позиций сайта в результатах... 
    Читать полностью