ПРОГРАМУВАННЯ МОВОЮ VBA
2.1. Вступ
VBA (Visual Basic for Application) - стандартна мова програмування в додатках MS Office. Слово "стандартна" означає, що незалежно від того, у якому додатку іде робота, досить вивчити стандартний набір команд і методик, щоб успішно їх застосовувати.
VBA включає велику кількість програмних конструкцій і забезпечує будь-який тип доступу до будь-якої функції додатка. Тут є потужний інструмент налагодження і можливість створення системи Help, що дозволяє створювати додатки Office на високому професійному рівні.
Хоча потрібні додатки можна створювати і не вдаючись у тонкості програмування, проте більшість розроблювачів так чи інакше вдаються до написання невеликих програм і тому знання ними принципів програмування мовою VBA просто необхідне.
Робоче середовище VBA часто називають інтегрованим середовищем розробки, тому що воно сполучає в собі різноманітні функції: проектування, редагування, компіляцію і налагодження додатка.
У даних методичних вказівках розглядаються основні елементи мови VBA і деякі можливості цієї мови для програмування завдань, пов'язаних з об'єктами Excel.
2.2. Робота у вікні модуля. Структура програми
Основним елементом програмування на VBA є процедура - блок операторів програми в модулі. Модуль - це набір оголошень і процедур мовою VBA, зібраних в одну програмну одиницю. Його можна створювати у вікнах будь-яких додатків MS Office. В Microsoft Access створення модуля ведеться в наступній послідовності:
Пуск ® Программы ® MS Access ® Новая база данных
У вікні, що відкриється, вибрати диск, папку, задати ім'я нової бази даних і нажати на кнопку «Создать».
Після цього у вікні відкритої бази даних створюється модуль за допомогою команд:
Модули ® Создать
Access створює новий модуль, подібний показаному на рис. 2.1. Починаючи з порожнього рядка, у вікні модуля пишеться програма.
Після написання модуля його потрібно зберегти командами: Файл ® Сохранить как, у текстовому полі задати ім'я і ОК.
Щоб створити нову процедуру у вже наявному модулі, потрібно відкрити його в режимі "Конструктор", помістити курсор у порожній рядок вікна модуляі виконати команди: Вставка (Insert)® Процедура (Procedure), у вікні, що відкрилося,вибрати тип процедури, область визначення, записати ім'я і ОК.
Для виконання процедури потрібно помістити курсор миші в будь-яке місце даної процедури і виконати команди
Запуск(Run) ® перейти/продолжить (RunSub/UserForm)
Рис.2.1 - Вікно нового модуля
Якщо модуль містить велику кількість процедур, то для пошуку потрібної потрібно розкрити список у вікні (Описания), виділити назва необхідної процедури й здійснити її запуск.
Налагодження програм. Для контролю проміжних результатів програму можна виконати в покроковому режимі. Для цього курсор установлюють у межах тексту програми, яку потрібно протестувати, і натискають клавішу F8. Після кожного натискання клавіші F8 налагоджувач переходить до чергового рядка тексту. Після тестування довідатися поточні значення змінних допоможуть спливаючі підказки. Для цього курсор миші варто помістити на ім'ї змінної і на екрані відобразиться її значення.
Структура програми. Правила написання програм. Якщо програма складається тільки з однієї процедури, то в найпростішому випадку її структура наступна:
Sub ім'я()
Оператори
End Sub
(Докладніше процедури будемо розглядати далі).
Кожний оператор програми записують в окремому рядку і для введення рядка натискають клавішу Enter. Допускається запис декількох операторів в одному рядку (при цьому один оператор від іншого відділяється двома крапками), однак це не рекомендується, тому що програму важче налагоджувати.
Якщо рядок програми занадто довгий, то використовують один з наступних варіантів:
- продовжують писати на тому ж рядку, допускаючи, щоб частина програми
перебувала за межами екрану;
- вводять символи продовження рядка - пробіл і знак підкреслення.
Усередині програм можна поміщати коментарі. При цьому кожний рядок коментаря починається зі знака апострофа.
2.3. Основні типи даних
В VBA є велика кількість типів даних, основні з яких наведені нижче.
Типи даних:
- integer - цілий тип (від -32768 до 32767);
- single - числовий тип одинарної точності (до 7 значущих цифр);
- double - числовий тип подвійної точності (до 14 значущих цифр);
- long - цілий тип (від -2147483648 до 2147483647);
- date - використовується для введення дати;
- string - строковий тип;
- currency - використовується у фінансових розрахунках;
- boolean - логічний тип (дані цього типу можуть приймати значення: true (істина) або false (неправда);
- object - посилання винятково на об'єкт;
- variant - довільний тип.
2.4. Змінні, масиви, константи і їхній опис
Змінні, масиви, константи й інші об'єкти мають ім'я, що повинно підкорятися наступним правилам:
- символи імені – букви, цифри й знак підкреслення;
- ім'я повинне починатися з букви;
- довжина ім'я не повинно перевищувати 255 символів;
- ім'я повинно бути унікальним усередині області дії.
Опис змінних
Синтаксис опису змінних:
Dim Им’я Змінної As тип, …, Им’я Змінної As тип
Наприклад:
Dim n As Integer, s As Double
Dim k As String
Масиви і їхній опис.
Масив – упорядкована сукупність даних одного типу. Масиви можуть мати одну, дві й більше размірностей (але не більше 60). Наприклад, X=(xi), i=0,1,2,…10 – одновимірний масив з 11 елементів; A=(aij), i=0,1,2,…,5;j=0,1,2,…,6; - двовимірний масив з 6´7 елементів. Елемент масиву – це змінна з індексами. Індекси в VBA обмежуються круглими дужками й відділяються один від одного комами. Наприклад, xi ® x(i); aij ® a(i,j).
У найпростішому випадку синтаксис опису масиву фіксованого розміру має вигляд:
Dim им’я Массиву (n1,n2,…,nk) As тип
де n1,n2,…,nk–максимальні значення відповідно 1-го, 2-го, ..., k-го індексів, мінімальне значення індексу вважається рівним 0.
Наприклад, Dim X (19) As String
Dim Y (3,7) As Single
Тут описаний строковий масив Х, що складається з 20 елементів і числовий масив Y, що складається з 4 рядків і 8 стовпців. Щоб нумерація індексів елементів починалася з 1, необхідно на початку модуля ввести команду Option Base 1.
Можна явно вказати початкове й кінцеве значення індексів, наприклад,
Dim b(1 to 3, 1 to 4) As Single
Для динамічного масиву (масиву зі змінними розмірами) синтаксис опису має вигляд:
Dim им’я Массиву () As тип
Після визначення розмірів динамічного масиву його потрібно перевизначити з використанням оператора ReDim. Наприклад, одновимірний масив А описується як динамічний: Dim А() As Single, а після визначення n (кількості елементів А ) масив перевизначається:
ReDim(1 to n) As Single
Константи і їхній опис
Константи - це незмінні величини. Cинтаксис опису констант:
Const им’я Константи = значення
Напримеp: Const G=9.8
Загальні правила описів
Строго кажучи, в VBA не потрібно описувати більшість змінних перед їхнім застосуванням. У цьому випадку вони називаються неявно описаними, і їм автоматично присвоюється тип Variant. При явному описі змінних на початку модуля повинна бути інструкція Option Explicit (вона з'являється автоматично при відкритті вікна модуля). Інструкція Option Explicit має наступні особливості:
- якщо неправильно вказати ім'я описаної змінної, то при компіляції видається
повідомлення про помилку, а це є ознакою того, що в імені змінної допущена орфографічна помилка;
- на зберігання даних типу Variant затрачається більше пам'яті і швидкість
їхньої обробки менша.
Якщо користуватися неявним описом, то інструкцію Option Explicit треба вилучити.
Важливим в VBA поняттям є поняття "область визначення змінних". Є три рівні такої області:
- локальна змінна описується за допомогою оператора Dim, розміщеного в
процедурі;
- змінна рівня модуля описується за допомогою оператора Dim, розміщеного
в розділі опису модуля;
- загальна змінна описується за допомогою оператора Public, а не оператора
Dim, у розділі опису модуля.
2.5. Операції VBA
Операції VBA умовно розділяються на три основні категорії: арифметичні, порівняння і логічні.
2.5.1. Арифметичні операції
Операція | Ім'я | Приклад | Результат |
+ | Додавання | 10+5 | |
- | Віднімання | 10-5 | |
* | Множення | 10*5 | |
/ | Ділення | 10/4 | 2.5 |
\ | Цілочисленне ділення | 10\4 | |
% | Відсотки | 10% | 0.1 |
^ | Піднесення до ступеня | 2 ^ 3 | |
Mod | Залишок від ділення | 10 mod 3 |
2.5.2. Операції порівняння
Операції порівняння використовуються в командах при порівнянні двох або більше числових, строкових величин. Якщо результат порівняння вірний, то результату присвоюється логічне значення True (Істина). Якщо результат порівняння невірний, то результату присвоюється логічне значення False (Неправда).
Оператор | Ім'я | Приклад | Результат |
= | Дорівнює | 10=5 | Неправда |
> | Більше | 10>5 | Істина |
< | Менше | 10<5 | Неправда |
>= | Більше або дорівнює | "a">="b" | Неправда |
<= | Менше або дорівнює | "a"<="b" | Істина |
<> | Не дорівнює | "a"<>"b" | Істина |
2.5.3. Логічні операції
Логічні операції використовуються для побудови логічних виражень.
Оператор | Загальний вид | Результат |
And | Вираз1 And вираз2 | Повертає значення "Істина", якщо вірні вираз1 і вираз2. У протилежному випадку повертає "Неправда". |
Or | Вираз1 Or вираз2 | Повертає значення "Істина", якщо хоча б один з виразів вірний. Значення "Неправда" буде тільки у випадку, якщо обидва вирази помилкові. |
Xor | Вираз1 Xor вираз2 | Повертає значення "Істина", якщо тільки один з виразів вірний. Якщо вірні обидва вирази або помилкові обидва вирази, то повертає значення "Неправда". |
Not | Not вираз | Повертає значення "Неправда", якщо вираз вірний, і значення "Істина", якщо вираз невірний. |
2.6. Стандартні функції
Для обчислення стандартних функцій необхідно вказувати ім'я функції і у дужках аргумент. Перелік основних стандартних функцій:
Функція | Призначення | Аргумент |
Abs(x) | çx ç | Будь-який числовий вираз |
Sqr(x) | Öx | Будь-який числовий вираз >0 |
Exp(x) | ex | Будь-який числовий вираз (<=709.7827) |
Log(x) | Ln x | Будь-який числовий вираз >0 |
Sin(x) | Sin x | Аргумент у радіанах |
Cos(x) | Cos x | Аргумент у радіанах |
Tan(x) | Tg x | Аргумент у радіанах |
Atn(x) | Arctg x | Будь-який числовий вираз. Повертає значення в радіанах. |
Int(x) | Відкидання дробової частини | Будь-який числовий вираз |
2.7. Вирази
В VBA можна виділити арифметичні, логічні й строкові вирази.
Арифметичні вирази (АВ) - це сукупність числових констант, змінних, функцій, зв'язаних арифметичними операціями: +, -, *, /, ^, \, mod.
Наприклад: sin(x)+log(y)/a^3*2.7
Правила запису арифметичних виразів
1. Не можна опускати знак множення.
2. АВ записується в рядок. Наприклад, записують як (a+b)/c.
3. Послідовність виконання дій:
- обчислення функцій;
- множення, ділення, mod;
- додавання віднімання.
Наприклад: 1)
2)
Слід зазначити, що змінити зазначений порядок обчислень можна за допомогою дужок, при цьому кількість дужок, що відкриваються й закриваються у виразі повинна бути однаковою.
Логічні вирази (ЛВ) - це сукупність логічних констант, логічних змінних, порівнянь, функцій логічного типу, з'єднаних логічними операціями. Результатом обчислення ЛВ може бути True або False.
Наприклад: 1) x < a+c 2) x*y < 0 and a+b>0
Строкові (текстові) вирази - сукупність строкових констант, строкових змінних, строкових функцій, з'єднаних операцією об'єднання &. Строкова константа (рядок) - це послідовність символів, розташованих в лапках. Строкові змінні (мають тип String) приймають значення строкових констант. Наприклад:
1)"Мені " & "двадцять " & "років"
2) Dim a As String, b As String, c As String
a=”Мені “ : c=”двадцять років”
c=a & b
Якщо вираз містить операції різних типів, то першими виконуються арифметичні операції, потім - операції порівняння, останніми - логічні операції.
Дата добавления: 2015-03-03; просмотров: 3889;