Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции-вба.doc
Скачиваний:
24
Добавлен:
05.05.2019
Размер:
164.86 Кб
Скачать

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. Перенос рядка. Перенос рядка в тексті програми на наступний організовується за допомогою розташування символів «пробіл знак підкреслювання». При цьому не можна розбивати переносом констан­ти й не допускається більше семи продовжень одного рядка.

  1. Розміщення кількох операторів в одному рядку. Для роз­міщення декількох операторів в одному рядку використовують дво­крапку («:»)

  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