Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование_на_VBA в_Excel

.pdf
Скачиваний:
29
Добавлен:
06.02.2016
Размер:
308.03 Кб
Скачать

Якщо метод здатний приймати значення параметрів, це виконується одним з трьох способів:

Iм'я об'єкта.Метод (аргумент1, аргумент2, …)

Iм'я об'єкта.Метод аргумент1, аргумент2, …

Iм'я об'єкта.Метод Iм'яАргумента1 := а1, Iм'яАргумента2 := а2, …,

де а1, а2 – значення аргументів.

Якщо потрібно звернутися відразу до декількох властивостей або методів одного і того ж об'єкту, то для спрощення коду програми використовують конструкцію

With Iм'я об'єкта

.Властивість1 = Значення1

.Метод1

.Метод2 End With

Нижче приводиться фрагмент тексту процедури з поясненнями, що ілюструє організацію роботи з об'єктами в Excel.

Private Sub CmdPrim1_Click()

Dim Ws As Worksheet

'описуємо Ws як робочий лист

Set Ws = Worksheets.Add

'додавання нового робочого листа

Ws.Name = "Іванова"

'завдання імені листу

Ws.Visible = True 'робимо лист видимим

'виводимо текст в комірку A1 і форматуємо її

Ws.Range("a1") = "Іванова OMT-09-1"

With Ws.Range("a1").Font

.Name = "Times New Roman"

.Size = 14

'задаємо розмір шрифту

.Bold = True

'напівжирне зображення

End With

'вводимо значення в комірки A4, B4 і C4

Ws.Range("a4") = 11.5 : Ws.Range("b4") = 7.6 : Ws.Range("c4") = 8

With Ws.Range("a4:c4")

'задаємо для елементів таблиці

.NumberFormat = "##.0" 'вивід з точністю 1 знак після коми

.HorizontalAlignment = xlCenter

'вирівнювання по центру

.Borders.LineStyle = xlDouble

'подвійну границю

End With

 

 

End Sub

 

 

11

4 ОСНОВНІ ЕЛЕМЕНТИ МОВИ VBA

4.1 Алфавіт мови VBA

Алфавіт (допустимі символи) мови VBA включає:

-букви латинського і російського алфавітів. Редактор VBA не розрізняє прописні і рядкові букви, тобто при введенні тексту програми можна використовувати як великі, так і малі букви;

-цифри;

-знаки арифметичних операцій й операцій порівняння;

-розділові знаки (круглі дужки, крапка, кома, крапка з комою, лапки, апостроф, прогалина, двокрапка);

-спеціальні знаки ($, &, %, #, @, \, ?, !).

4.2 Константи і змінні

Константи – це величини, що не змінюють своє значення під час виконання програми. Вони підрозділяються на числові і строкові. Числові константи записуються у звичайному виді, тільки ціла частина відокремлюється від дробової десятковою крапкою. Наприклад, 2418, 5318.62, -31.4. Для запису дуже малих або дуже великих чисел використовують експоненціальну форму запису у виді мантиси і порядку. Наприклад, число -5,8×10-9 слід записати у виді -5.8e-9, а число

3,195×108 – у виді 3.195e8.

Змінні – це величини, що можуть змінювати своє значення під час виконання програми. Кожна змінна характеризується своїм ім'ям і типом. Завдяки імені можливо звернутися до змінної у програмі. Імена повинні відображати суть змінної, щоб зробити програму легко читаною. До імен змінних висуваються такі вимоги:

-ім'я повинне починатися з букви або символу підкреслення "_";

-в іменіможуть використовуватися тільки букви, цифри й символ "_";

-імена мають бути без пропусків (для відокремлення слів використовуються символи підкреслення "_", крапка "." або велика літера;

-різні імена не повинні відрізнятись лише регістром, оскільки

12

VBA не розрізняє великі та малі літери;

− не слід використовувати імена, що співпадають з ключовими словами мови VBA і іменами вбудованих функцій і процедур.

Тип характеризує тип інформації, яку містить змінна. Характеристика основних типів даних приведена в таблиці 4.1.

Таблиця 4.1 – Основні типи даних VBA

Тип

Розмір,

Характеристика

даних

байт

 

Byte

1

цілі числа від 0 до 255

Integer

2

цілі числа від -32768 до +32767

Single

4

число з плаваючою крапкою одинарної точності

Double

8

число з плаваючою крапкою подвійної точності

String

 

рядок символів, кожен символ займає 1 байт

Boolean

2

логічні дані, що можуть приймати значення

 

 

True або False

Variant

 

дані, для яких тип не відомий, займають більше

 

 

місця, чим явно оголошені змінні

Усі змінні повинні бути описані в програмі до початку їх використання за допомогою оператора

Dim Ім'я змінної As Тип

де Ім'я змінної – ім'я змінної; Тип – тип даних змінної.

У VBA розрізняють три рівні видимості змінних:

рівень процедури, коли область видимості змінної обмежена однією конкретною процедурою. Такі змінні називаються локальними

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

рівень модуля, коли область видимості обмежена одним конкретним модулем і розповсюджується на всі процедури цього модуля. Такі змінні оголошуються у модулі за допомогою Dim або Private перед всіма процедурами. Такий рівень видимості застосовується в тих випа-

13

дках, коли змінна необхідна для декількох процедур модуля; − рівень проекту, коли область видимості розповсюджується на

весь проект. Такі змінні оголошують за допомогою ключового слова

Public.

Якщо тип даних змінної не визначений, то за замовчуванням вона одержує тип Variant.

4.3 Арифметичні і логічні операції

Знаки арифметичних операцій й операцій порівняння приведено в таблиці 4.2.

Таблиця 4.2 – Арифметичні операції й операції порівняння

 

Арифметичні операції

 

Операції порівняння

^

 

піднесення до степеня

=

дорівнює

*

 

множення

<>

не дорівнює

/

 

ділення

>

більше

\

 

цілочисельне ділення

<

менше

mod

 

ділення по модулю

>=

більше або дорівнює

+

 

додавання

<=

менше або дорівнює

-

 

віднімання

 

 

При цілочисельному діленні (\) чисельник і знаменник округляються до цілих, виконується ділення, дробова частина відкидається без округлення. Наприклад, 19\10 = 1. Операція mod цілочисельно ділить перше число на друге, повертаючи тільки залишок від ділення. Напри-

клад, 19 mod 10 = 9.

Складні порівняння здійснюються за допомогою логічних операторів And (логічне множення), Or (логічне додавання) і Not (логічне заперечення). Ці оператори дають змогу об'єднати дві або більше умов в одну. Операція And використовується, коли треба переконатися, що виконуються обидві умови. Якщо треба перевірити, що виконується хоча одна з умов, то використовується операція Or. Операція Not замінює результат логічної операції на протилежний.

14

Коли в одній формулі поєднуються кілька операцій, вони виконуються в наступному порядку:

обчислення функцій;

піднесення до степеня (^);

множення й ділення (*,/);

цілочисельне ділення (\);

ділення по модулю (mod);

додавання й віднімання (+,-);

операції порівняння (=, <>, >, <, >=, <=);

логічна операція Not;

логічна операція And;

логічна операція Or.

Операції з однаковим пріоритетом виконуються зліва направо. Для зміни пріоритетності операцій використовуються круглі дужки (). Дві логічні операції можна записувати підряд, якщо другою операцією є Not. Наприклад, And Not C.

Перелік основних математичних функцій приведено в таблиці 4.3. Їх аргументами можуть бути константи, змінні, арифметичні вирази.

Таблиця 4.3 – Перелік основних математичних функцій VBA

Математичне

Запис функції

Призначення функції

позначення

на VBA

 

|x|

abs(x)

визначає модуль числа

ex

exp(x)

визначає експоненту заданого числа

lnx

log(x)

визначає натуральний логарифм числа

 

 

 

sqr(x)

визначає додатне значення квадратного

 

x

 

 

кореня

 

 

 

 

arctgx

atn(x)

визначає арктангенс числа

cosx

cos(x)

визначає косинус числа

sinx

sin(x)

визначає синус числа

tgx

tan(x)

визначає тангенс числа

 

 

 

rnd

повертає випадкове число між 0 та 1

Якщо функція відсутня в таблиці, слід використовувати математичні співвідношення:

15

lgx = ln x ln10

arcsin x

 

 

lnb

 

 

 

1

 

 

 

 

 

æ 1

ö

, loga b =

 

 

,

ctgx =

 

,

arcctgx = arctgç

 

÷ ,

 

 

ln a

 

 

 

tgx

 

 

 

 

 

è x ø

æ

 

 

 

 

ö

 

 

 

æ

 

 

 

ö

 

 

x

 

 

 

 

1- x

2

 

= arctgç

 

 

÷

, arccos x

= arctgç

 

 

÷ .

 

 

 

 

 

 

 

 

 

 

ç

 

1- x

2

÷

 

 

 

ç

 

x

 

÷

 

è

 

 

ø

 

 

 

è

 

 

ø

 

4.4 Організація введення-виведення даних

Для уведення даних використовуються елементи керування (текстові поля, списки, комбіновані поля), комірки Excel, функція

InputBox.

Елементи керування найчастіше розміщують на формі, рідше – безпосередньо на робочому листі Excel. Властивість Value повертає вміст елемента керування, що використовується для введення даних. Для цього слід записати оператор

Iм'я змінної = Iм'я об'єкта.Value

Для введення даних з комірки Excel слід записати оператор

Iм'я змінної = Range(“Адреса комірки”)

Функція InputBox забезпечує формування вікна для введення інформації з відображенням його заголовка і запрошуванням користувача до введення інформації. Вона має наступний синтаксис:

InputBox(Повідомлення [,Заголовок вікна])

де Повідомлення – рядок повідомлення, що визначає текст для відображення у вікні;

Заголовок вікна – необов'язковий параметр, що задає напис заголовка вікна. Якщо цей параметр не вказано, то відображається назва додатка.

Функція InputBox повертає рядок, введений користувачем. При введенні даних ціла частина числа відділяється від дробової крапкою. Введення закінчується натисненням Enter або клацанням на кнопці Ok. У разі клацання на кнопці Cancel повертається порожній рядок.

Усі три способи введення даних повертають рядок, тому при введенні числа необхідно перетворити введений рядок в число. Пере-

16

творення строкових даних у числові здійснюється за допомогою функції Val, що має синтаксис:

Val(строкове вираження)

Для виведення даних найчастіше використовуються текстові поля або комірки Excel. Для виведення даних у текстове поле слід записати оператор:

Iм'я елемента.Value = Iм'я змінної

Щоб вивести дані в комірку Excel, треба записати оператор:

Range(“Адреса комірки”) = Iм'я змінної

Якщо адреса комірки, в яку треба вивести дані, повинна змінюватися під час виконання програми, для виведення даних замість об'єкта Range рекомендується використовувати об'єкт Cells. Для цього треба записати оператор:

Cells(nРядка, nСтовпця) = Iм'я змінної

де nРядка, nСтовпця – цілі невід'ємні числа або змінні цілого типу, що задають номер рядка і стовпця таблиці Excel.

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

Str(числове значення)

Приклад організації введення-виведення даних приведено в наступному підрозділі, а приклад використання елементів керування для введення-виведення даних – в розділі 8.

4.5 Програмування лінійних процесів

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

17

R = arccos2 1− sin2 πn + log5

Розглянемо приклад програми лінійної структури, яка запускається на виконання клацанням по кнопці, що знаходиться на поточному робочому листі Excel, виводить у другому і четвертому рядках поточного листа текстову інформацію, організує уведення вхідних даних з клавіатури під час виконання програми, розраховує значення функції

σ + 0,8ctgρ , виводить на поточний лист вхі- 2,4

дні дані і результат розрахунку. Текст програми на VBA приведено нижче.

Private Sub CmdPrim2_Click()

Range("a2") = "Приклад програми лінійної структури" Range("a4") = "Вхідні дані і результати"

Dim n As Single, sigma As Single, ro As Single Dim x1 As Single, x2 As Single, R As Single

n = Val(InputBox("введіть n"))

sigma = Val(InputBox("введіть sigma")) ro = Val(InputBox("введіть ro"))

x1 = Abs(1 - Sin(3.14 * n) ^ 2) 'аргумент arccos x2 = (sigma + 0.8 / Tan(ro)) / 2.4 'аргумент log

R = Atn(Sqr(1 - x1 * x1) / x1) ^ 2 + Log(x2) / Log(5) Range("a5") = "n" : Range("a6") = Str(n) Range("b5") = "sigma" : Range("b6") = Str(sigma) Range("c5") = "ro" : Range("c6") = Str(ro) Range("d5") = "R" : Range("d6") = Str(R)

Range("a5:d6").Borders.LineStyle = xlContinuous 'Завдання границь End Sub

Після запуску програми на виконання треба послідовно у відповідь на повідомлення, що з'являються на екрані, ввести з клавіатури значення n, sigma, ro (наприклад, 0.8, 1.6, 5.7).

5 ПРОГРАМУВАННЯ РОЗГАЛУЖЕНИХ І ЦИКЛІЧНИХ ОБЧИСЛЮВАЛЬНИХ ПРОЦЕСІВ

5.1 Організація розгалужень

Обчислювальний алгоритм називається розгалуженим, якщо залежно від виконання певних умов він реалізується по одному з декіль-

18

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

Оператор безумовного переходу GoTo має наступний синтаксис:

GoTo мітка

Тут мітка – мітка рядка, до якого потрібно перейти. Мітка може мати не більше 40 букв і цифр і повинна починатися з букви. У рядку, що починається з мітки, відразу після мітки ставиться двокрапка, потім прогалина і оператор. Наприклад:

GoTo m1

Блок_операторів m1: оператор

Оператор GoTo утрудняє читання програми, тому його можна використовувати тільки в тих випадках, коли неможливо організувати розгалуження іншими операторами, наприклад при обробці помилок.

Найчастіше для організації процесів, що розгалужуються, використовується оператор умовного переходу If Then Else, який може мати просту однорядкову (простий оператор If) або блокову структуру (структурний оператор If).

Однорядковий оператор If має наступний синтаксис:

If умова Then Оператор1 [Else Оператор2]

де умова – логічний вираз, що має значення True (Істина) або

False;

оператор1 – оператор, що виконується при істинності логічного виразу;

оператор2 – оператор, що виконується, коли логічний вираз має значення False.

Іншими словами, якщо логічний вираз має значення True, то ви-

19

конується оператор, вказаний за Then (То), інакше – оператор, наступний за ключовим словом Else (Інакше), якщо таке є. Блок Else може бути відсутнім.

Структурний оператор If має наступний синтаксис:

If умова1 Then

Блок_операторів_1 Elseif умова2 Then

Блок_операторів_2

Else

Блок_операторів_n End if

Логіка роботи цього оператора така ж, як і If простого, тільки послідовно можна перевіряти ряд умов, а блоки операторів можуть містити декілька рядків. Блок Else може бути відсутнім. Структурний оператор If обов'язково повинен закінчуватися End if.

Для вибору однієї з багатьох альтернативних дій зручно використовувати оператор вибору Select Case, який має наступний синтаксис:

Select Case Вираз

Case СписокВиразів_1 Блок_операторів_1 Case СписокВиразів_2 Блок_операторів_2

Case Else

Блок_операторів_n End Select

Вибір варіанта визначається значенням керуючої змінної Вираз, котре порівнюється з умовами, зазначеними після Case. Якщо всі порівняння невдалі, то виконуються оператори після Case Else. СписокВиразів (діапазон значень) можна задавати трьома способами:

переліком значень через кому;

за допомогою ключового слова To, ліворуч від якого записується найменше, а праворуч – найбільше значення;

20