
- •Доступ до об'єктів Excel з vb
- •1.1.Методи об'єктів
- •1.2. Контейнери і набори об'єктів
- •2. Використання властивостей, що характеризують активність
- •3.Використання властивостей, що характеризують вміст
- •4. Властивості форматування
- •5. Методи роботи з таблицями
- •Контрольні завдання по темі
- •1. Теоретичні питання
- •2. Тести
- •3. Практичні завдання
- •Вживання процедур і функцій
- •6.Передача величин процедурі
- •7. Створення і вживання функцій
- •Контрольні завдання по темі
- •1. Теоретичні питання
- •2. Тести
- •При застосуванні службового слова РаrаmArrау у списку аргументів функції/процедури перед ім'ям деякого аргументу, яка дія повинна застосовуватися для цього аргументу?
- •3. Практичні завдання
- •Оператори управління
- •1. Оператор if
- •If логічний_вираз then оператор,
- •1.1. Логічні вирази
- •1.2. Структура оператора if - then
- •2.Структура оператора Select Case
- •3. Неструктурований перехід
- •Контрольні завдання по темі
- •1. Теоретичні питання
- •2. Тести
- •3. Практичні завдання
- •Цикли і структури, що повторюються
- •1. Вживання обчислюваних циклів
- •1.1. Циклічна структура for – next
- •1.2. Цикл for each – next
- •2. Логічні цикли
- •2.1. Вживання циклу do - loop
- •2.2. Вживання циклів while - wend
- •Контрольні завдання по темі
- •1. Теоретичні питання
- •2. Тести
- •3. Практичні завдання
- •Вбудовані діалогові вікна
- •1. Вживання функції MsgBox()
- •1.1. Створення простого вікна повідомлення
- •1.2. Додавання командних кнопок у вікно повідомлення для створення діалогового вікна
- •1.3. Набуття значень від функції MsgBox()
- •2. Вживання функції InputBox()
- •3. Вживання діалогових вікон інших типів
- •4. Виклик діалогових вікон додатку
- •Контрольні завдання по темі
- •1. Теоретичні питання
- •2. Тести
- •3. Практичні завдання
- •Література
1.2. Цикл for each – next
Цикл FOR EACH – NEXT (для кожного – наступного) – ще називають циклом об’єктного типа, який дуже схожий на обчислюваний цикл, оскільки виконується певну кількість разів. Але застосовується він до набору об’єктів і виконується по одному разу для кожного об’єкту з набору. Якщо використовується цикл об’єктного типу, то немає необхідності знати, скільки об’єктів в себе включає набір. Лічильник циклу містить не величину, що визначає кількість ітерацій (кроків) циклу, а об’єкт з набору. Крім того, цикли об’єктного типу можна застосувати до масивів. В цьому випадку цикл виконується для кожного елементу масиву, і змінна_циклу містить значення кожного з цих елементів (по черзі).
Для застосування циклу об’єктного типу використовується наступний синтаксис:
For Each елемент In набір
…
Next елемент
Де елемент представляє собою змінну типу Variant, що забезпечує можливість посилання на об’єкт. Змінна набір є деяким набором об’єктів. В процесі виконання циклу об’єкт вибирається з елементів набору та розміщується в змінній елемент по черзі. Це дозволяє використовувати змінну елемент в блоці коду циклу для застосування необхідних дій з об’єктом. Подібно до циклу FOR – NEXT оператор Exit For перериває цикл FOR EACH – NEXT до його закінчення.
Структуру FOR EACH – NEXT дуже зручно застосовувати у різних випадках, особливо коли масив або клітини передаються функцією користувача.
Приклад:
Function Summa_n(ParamArray Masiv())
DIM Summa, el ‘ Summa змінна, що відповідає за суму елементів набору
‘ el змінна, що відповідає за кожен елемент набору
Summa = 0
For Each el In Masiv()
Summa = Summa + el
Next el
Summa_n = Summa
End Function
Принцип роботи такого циклу:
Змінній циклу el привласнюється значення першого елементу масиву Masiv(). Якщо в масиві немає жодного елементу, цикл не виконуватиметься жодного разу.
Виконується задана послідовність операцій Summa = Summa + el (накопичення суми).
Перевіряється, чи є цей елемент останнім в масиві. Якщо так, то цикл припиняється, якщо ні, то змінній циклу привласнюється значення наступного елементу масиву, і цикл повторюється знову.
Розглянемо як мала б виглядати функція з використанням структури FOR – NEXT:
Function Summa_n_1(ParamArray Masiv())
DIM Summa ‘ змінна, що відповідає за суму елементів набору
DIM і As Integer ‘ змінна, що відповідає за індекс елементу набору
DIM I_Max As Integer, I_Min As Integer ‘ змінні, що відповідають за найбільший ‘ та найменший індекс набору
I_Max = Ubound(Masiv) ‘ визначення найбільшого індексу набору
I_Min = Lbound(Masiv) ‘ визначення найменшого індексу набору
Summa = 0
For і = I_Min to I_Max
Summa = Summa + Masiv(i) ‘ накопичення суми елементів набору
Next i
Summa_n_1 = Summa
End Function
Результати роботи обох функцій мають однакові значення для однакових наборів значень, тобто Summa_n_1(10; -9; 2; -4; 1; 101; -100; 20; 50) = = Summa_n(10; -9; 2; -4; 1; 101; -100; 20; 50) = 71.
2. Логічні цикли
Логічними циклами називаються цикли, у яких повторення блоку коду переривається, якщо задовольняється деяка умова. Якщо обчислювані цикли виконуються певну кількість разів, то логічний цикл, може виконувати блок коду невизначену кількість разів або взагалі не виконувати залежно від стану логічної умови що перериває цикл. Можна використовувати логічно безперервну структуру замість обчислюваного циклу шляхом нарощування змінної після кожного кроку циклу і перевірки її значення в умові переривання циклу.
Логічне переривання циклу використовується в тих випадках, коли кількість кроків циклу заздалегідь невідома. Наприклад, читання даних з файлу.
Логічні цикли реалізують оператори DO - LOOP та WHILE – WEND. Перший цикл може перериватись оператором EXIT DO, на відміну від другого.