
- •Тема.2 Основні поняття про середовище програмування
- •1. Виникнення та застосування vba.
- •2.Принципи візуального об’єктна-орієнтованого програмування.
- •3.Типи даних, змінні та константи vba
- •4. Операції, вбудовані функції, оператори та підпрограми vba.
- •2) Do While умова Оператори
- •5. Процедури обробки помилок і відладки програм
4. Операції, вбудовані функції, оператори та підпрограми vba.
Операції VВА
У VBA- програмах можна використовувати стандартний набір операцій із даними. Існують три типи операцій:
1)математичні — виконуються з числами і їх результатом є також числа (табл. 1):
Таблиця 1
Математичні операції
Синтаксис операції |
Назва операції |
[Операнд 1] + [Операнд 2] |
Додавання |
[Операцд 1]- [Операнд 2] |
Віднімання |
- [Операнд] |
Зміна знака |
[Операнд 1] * [Операнд 2] |
Множення |
[Операнд 1]/[Операнд 2] |
Ділення |
[Операнд 1] \ [Операнд 2] . |
Цілочислове ділення |
[Операнд 1] Mod [Операнд 2] |
Частка від ділення |
[Операнд 1]^ [Операнд 2] |
Піднесення до степені |
2) відношення — виконуються з різними типами даних (у тому числі з нечисловими) і їх результатом є логічні значення (табл. 11.2):
Таблиця 2
Операції відношення
Синтаксис операції |
Назва операції |
[Операнд 1] < [Операнд 2] |
Менше |
[Операнд 1] > [Операнд 2] |
Більше |
[Операнд 1] <= [Операнд 2] |
Більше або дорівнює |
[Операнд 1] => [Операнд 2] |
Не дорівнює |
[Операнд І] о [Операнд 2] |
Дорівнює |
[Операнд 1] = [Операнд 2] |
Порівняння двох операторів, що містять посилання на об'єкти |
[Операнд 1] Іs [Операнд 2] |
Порівняння двох рядків |
[Операнд 1] Like [Операнд 2] |
Менше або дорівнює |
3) логічні - використовуються в логічних виразах і їх результатом є логічні значення (табл. 3):
Таблиця 3
Логічні операції
Синтаксис операції |
Назва операції |
[Операнд 1] And [Операнд 2] |
Логічне множення ("і") |
[Операнд 1] Оr [Операнд 2] |
Логічне додавання (або") |
[Операнд 1] Хоr [Операнд 2] |
Заперечення тотожності |
[Операнд 1] Not [Операнд 2] |
Логічне заперечення |
. [Операнд 1] Ітр [Операнд 2] |
Логічна імплікація |
[Операнд 1] Еqu [Операнд 2] |
Логічна еквівалентність |
Окрім того, у VBA є операція з'єднання рядків &, що не належить до перелічених типів.
VBA виконує операції у відповідності з їх пріоритетами, що забезпечує однозначність у трактуванні значень виразів. Пріоритетність виконання операцій така: виклик функції, дужки, ^, зміна знака, *, /, \, Mod, +, -, операції відношення, логічні операції.
Вбудовані функції VВА
У VВА міститься великий набір вбудованих функцій і процедур, використання яких суттєво спрощує програмування. Ці функції можна розподілити на такі основні категорії:
1)математичні функції (табл.4):
Таблиця 4
Математичні функції
Функція |
Значення |
Abs (число) |
Модуль числа |
Аtn (число) |
Арктангенс числа |
Соs (число); |
Косинус числа |
Ехр (число) |
Експонента числа |
Log (число) |
Натуральний логарифм |
Rnd (число) |
Випадкове число з інтервалу [0,1) |
Sqn (число) |
Знак числа |
Sin (число) |
Синус числа |
Sqr (число) |
Квадратний корінь із числа |
Таn (число) |
Тангенс числа |
Fіх (число), Іnt (число) |
Обидві функції відкидають дробову частину числа і повертають ціле значення. Різниця в тому, що для від'ємних значень Іnt повертає ближче від'ємне ціле число, менше або дорівнює вказаному, а Fіх — більше або те, що дорівнює вказаному. |
2) функції перевірки типів (табл. 5):
Таблиця 5
Функції перевірки типів
Функції |
Перевірка |
IsArray (змінна) |
Чи є змінна масивом |
IsDate (змінна) |
Чи є змінна датою |
IsEmpty (змінна) |
Чи описана змінна за допомогою інструкції Dim |
Is Error (змінна) |
Чи є змінна кодом помилки |
IsNull (змінна) |
Чи є змінна порожнім значенням |
IsNumeric (змінна) |
Чи є змінна числовим значенням |
IsObject (змінна) |
Чи є змінна об’єктом |
3)функції перетворення форматів (табл. 6):
Таблиця 6
Функції перетворення форматів
Функція |
Значення |
Val (рядок) |
Числове зображення рядка |
Str (число) |
Рядкове зображення числа |
CBool (вираз) |
Перетворення виразу до типу Boolean |
CByte(вираз) |
Перетворення виразу до типу Byte |
CCur(вираз) |
Перетворення виразу до типу Currency |
CDate(вираз) |
Перетворення виразу до типу Date |
CDbl(вираз) |
Перетворення виразу до типу Double |
CDec(вираз) |
Перетворення виразу до типу Decimel |
CInt(вираз) |
Перетворення виразу до типу Integer |
CLng(вираз) |
Перетворення виразу до типу Long |
CSng(вираз) |
Перетворення виразу до типу Single |
CVar(вираз) |
Перетворення виразу до типу Variant |
CStr(вираз) |
Перетворення виразу до типу String |
4)функції обробки рядків (табл. 7):
Таблиця 7
Функції обробки рядків
Функція |
Тип, до якого перетворюється аргумент |
Lcase (рядок) |
Перетворює рядок до нижнього регістра |
Ucase (рядок) |
Перетворює рядок до верхнього регістра |
Left (рядок, довжина) |
Повертає частину рядка, що складається із заданої кількості перших символів вихідного рядка |
Right(рядок, довжина) |
Повертає частину рядка, що складається із заданої кількості останніх символів вихідного рядка |
Mid (рядок, старт [довжина]) |
Повертає частину рядка, що містить задану кількість символів |
Len(рядок) |
Кількість символів рядка |
Ltrim(рядок) |
Копія рядка без пробілів на початку рядка |
Rtrim(рядок) |
Копія рядка без пробілів у кінці рядка |
Trit(рядок) |
Копія рядка без пробілів на початку та в кінці рядка |
Space(число) |
Повертає рядок, що складається з вказаної кількості пробілів |
String(число, символ) |
Повертає рядок, що складається з вказаної кількості одного і того самого символу |
InStr([довжина],рядок1, рядок 2) |
Повертає позицію першого входження одного рядка в інший рядок |
5)функції часу та дати (табл. 8):
Таблиця 8
Функції часу та дати
Функція |
Тип, до якого перетворюється аргумент |
Date |
Повертає поточну системну дату |
Time |
Повертає поточний системний час |
Now |
Повертає поточну системну дату та час |
Hour (час) |
Повертає годину у значенні часу |
Minute(час) |
Повертає хвилину у значенні часу |
Second(час) |
Повертає секунду у значенні часу |
Day (дата) |
Повертає день у значенні дати |
Month(дата) |
Повертає місяць у значенні дати |
Year(дата) |
Повертає рік у значенні дати |
Оператори VВА
1. Оператор присвоєння — присвоює значення виразу змінній, константі або властивості об'єкта. Оператор присвоєння завжди включає знак рівності («=»).
Синтаксис оператора:
Змінна (або Константа або Властивість) = Вираз .
Для присвоєння значень змінній об'єкта застосовується інструкція Set, що має такий синтаксис:
Set Об'єктна Змінна = Об'єктний Вираз
2. Перенос рядка. Перенос рядка в тексті програми на наступний організовується за допомогою розташування символів «пробіл знак підкреслювання». При цьому не можна розбивати переносом константи й не допускається більше семи продовжень одного рядка.
Розміщення кількох операторів в одному рядку. Для розміщення декількох операторів в одному рядку використовують двокрапку («:»)
Коментар. Для полегшення сприйняття програми зручно в процесі її написання використовувати коментарі, тобто фрагменти тексту, що не є програмним кодом та ігноруються компілятором.
Ознакою введення коментарію є символ апострофу («'»), який можна ставити в довільному місці коду; при цьому всі символи після апострофа до кінця рядка будуть коментарем.
Коментарі виконують дві важливі функції:
роблять програму легшою для сприйняття, завдяки поясненню змісту програмного коду та алгоритмів;
тимчасово відключають фрагменти програмного коду при його відладці.
5. Оператор умовного переходу if використовується в програмі, коли потрібно виконати ті чи інші дії, залежно від виконання певної умови, і є реалізацією розгалуженого алгоритму. Умовою, як правило, виступає певний логічний вираз. Існує кілька варіантів конструкції if, що застосовуються відповідно до складності початкової умови:
1) if умова Then оператор
Це найпростіша умовна конструкція, що займає один рядок і після перевірки умови дозволяє виконати лише один оператор.
2) if умова Then
Оператори 1
[Else
Оператори 2] End if
У даному випадку спочатку перевіряється умова. Якщо вона істинна, то виконується група операторів Оператори 1, якщо ж хибна — група операторів Оператори 2.
3) if умова 1 Then Оператори 1
[Else if умова 2 Then
Оператори 2
Else if умова 3 Then
Оператори 3
….
Else
Інші оператори]
End if
Це найзагальніший варіант умовного оператора, що дозволяє використання більше ніж однієї умови. В такій конструкції додаток послідовно переглядає всі умови, поки не знайде істинну. Після цього виконується відповідна група операторів, а програма переходить до рядка End if.
Зауважимо, що існує можливість вкладення операторів if, але при цьому особливу увагу потрібно звернути на відповідність закінчення кожному оператора End if
6. Оператор Case. Конструкція if може бути достатньо складною і громіздкою, якщо багаторазово використовувати блок Else if. У такому випадку є більш проста альтернатива використовується оператор Case:
Select Case Змінна
Case Значення 1
Оператори 1
Case Значення 2
Оператори 2
…
[Case Else
Інші Оператори]
End Select
Ця конструкція реалізує алгоритм множинного вибору. Вираз Змінна буде надано змінній, по відношенню до якої виконуватимуться різні варіанти дій. Вирази Значення 1, Значення 2 і т.д. є значеннями змінної, що не повторюються і можуть бути як одиничними значеннями, так і діапазонами. В залежності від значення змінної буде виконуватися той чи інший набір операторів.
7. Оператори циклів. За допомогою операторів циклів у програмі організовують циклічні алгоритми, що дозволяють розв'язувати зада- чі з повторенням операторів. У VВА є два типи циклів: цикли For і цикли Do.
Найпростіші цикли у VВА організовуються за допомогою операторів For ...Next. Вони мають фіксовану кількість кроків і використовують такий синтаксис:
For і = Перший То Останній [Step Крок]
Оператори 1
[Exit For]
[ Оператори 2]
Next[і]
У циклі For завжди присутня змінна-лічильник. У даному випадку — це змінна і. Перший рядок вказує на те, що змінна і набуває значення з Перший до Останній з заданим кроком. Якщо крок не задано, то він вважається таким, що дорівнює 1. Для кожного значення змінної-лічильника виконується програмний код Оператори, розміщений у тілі циклу. Оператор Exit For дозволяє вийти з циклу раніше, ніж змінна досягне кінцевого значення. Як правило, оператор Exit For використовують після умовного оператора. Часто цикли For є вкладеними (наприклад, при роботі з матрицями). В таких випадках для кожного циклу використовується свій лічильник.
Якщо кількість повторень циклу нефіксована, доцільно скористатися циклом Do. Існує 4 варіанти циклу Do:
1) Do Until умова Оператори
Loop