Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MicroSoft ofice Bikov_BELKA_1.pdf
Скачиваний:
51
Добавлен:
24.02.2016
Размер:
16.73 Mб
Скачать

Частина IV ОБ’ЄКТНО-ОРІЄНТОВАНА МОВА. РЕДАКТОР VISUAL BASIC FOR APPLICATIONS

Частина IV

ОБ’ЄКТНО-ОРІЄНТОВАНА МОВА. РЕДАКТОР VISUAL BASIC

FOR APPLICATIONS

4.1. Основи об’єктно-орієнтованого програмування

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

наявність об’єктно-орієнтованої мови програмування, яка дозволяє ефективно застосовувати модульний принцип складання програм;

візуальні засоби розробки, які дають можливість замінювати написання програмного коду малюванням інтерфейсу користувача і завдання функціональності діалоговими засобами;

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

можливість підтримки додатків «клієнт — сервер» необмеженої складності.

Існує велика кількість засобів швидкої розробки додатків. Так, одна тільки компанія Microsoft створила 5 таких засобів обробки даних: Of-

fice, SQL Server, Visual Basic, Visual C++, Visual FoxPro. В даному розділі розглядається мова програмування Visual Basic for Applications (VBA),

яка дозволяє розробляти програмні модулі для додатків пакета Microsoft Office. Ця мова складається з двох частин — структурної та об’єктно-

151

БИКОВ І. Ю., ЖИРНОВ М. В., ХУДЯКОВА І. М.

MICROSOFT OFFICE В ЗАДАЧАХ ЕКОНОМІКИ ТА УПРАВЛІННЯ

орієнтованої. Приструктурному програмуванні послідовно здійснюються операції, які записуються відповідно до логіки розв’язання поставленої задачі. При цьому застосовуються основні структури — лінійна структура, розгалуження, цикл.

В об’єктно-орієнтованому програмуванні ми маємо справу не тільки з традиційними програмними структурами, а й з об’єктами — вікнами, полями для введення даних, робочими книгами, аркушами, коміркамиExcel, таблицями, запитами, записамиAccess, відрізками текстуWord та багатьма іншими. Об’єкт навіть може не існувати візуально.

Об’єкт — програмно пов’язана колекція методів (функцій) та властивостей, які виконують єдину функціональну задачу. Програміст створює потрібні об’єкти, а потім описує дії з ними, а також їх реакцію на дії користувача. Корисні об’єкти зберігаються як типові і їх можна багаторазово використовувати в кількох програмах.

Метод — функція або процедура, яка керує роботою об’єкта. Момент виконання методу визначається виключно програмним способом.

Властивість — характеристика, за допомогою якої описується зовнішній вигляд та робота об’єкта. Наприклад, об’єкт «вікно» має набір властивостей (заголовок, тип шрифту для його написання, вигляд ліній та колір рамки, розмір та розміщення на екрані тощо) та методів для управління його поведінкою на екрані.

Подія — дія, яка пов’язана з об’єктом, ініціюється користувачем, програмою або операційною системою. Подія є основним засобом для опису потрібної реакції об’єкта на дію користувача. Наприклад, подіями є натискання кнопки екранної форми, заповнення текстового поля, аварійна ситуація при обчисленні. Деякі дії викликають послідовність подій, наприклад, завантаження екранної форми.

Клас — це шаблон, який об’єднує та описує методи і властивості, які застосовуютьсядляоб’єктівпевноготипу. Прироботіпрограминабазіопису класу створюються конкретні об’єкти будь-якої кількості (примірники класу). Класиутворюютьдеревовиднуструктуру. Класибільшвисокихступенів називають батьківськими, а більш низьких — підкласами. Класи, які знаходяться на вершині ієрархії, називають базовими. Базові класи розподіляються на контейнери та елементи управління. Контейнери можуть містити інші об’єкти і водночас допускають маніпуляції з цими внутрішніми

152

Частина IV ОБ’ЄКТНО-ОРІЄНТОВАНА МОВА. РЕДАКТОР VISUAL BASIC FOR APPLICATIONS

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

Характерні особливості класів та об’єктів:

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

Інкапсуляція — можливість об’єднання зв’язаних фрагментів даних або процесів в окремий модуль-контейнер. Об’єкт створюється як «чорна скриня», з приховуванням внутрішніх даних. Використання інкапсуляції дає змогу при створенні об’єкта зосередитися на конкретних задачах, не задумуючись про зміни в інших частинах програми, які викликані цими змінами. До того ж інкапсуляція забезпечує більш небезпечний спосіб дублювання програм або об’єктів, адже нові програми та об’єкти легко утворюються на базі існуючих, перевірених у роботі.

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

Звернення — інструкція від одного об’єкта до іншого для виконання одного з методів об’єкта, до якого йде звернення. На письмі ім’я об’єкта відокремлюється крапкою: <об’єкт>.<метод>. Наприклад: ActiveWorkbook. Close — закриває активне вікно. Якщо нема можливості безпосередньо звернутися до об’єкта, утворюється ланцюжок з об’єктів-контейнерів, наприклад:

Application. Workbooks(“Book1. xls”). Worksheets(“Лист2”). Delete

знищуєробочийаркушзназвою«Лист2» вфайліBook1 програмиMicrosoft Excel.

Аналогічно виконується звернення до властивостей об’єктів. Можна витягнути інформацію про об’єкт, одержавши значення деякої властивості: <змінна> = <об’єкт>.<властивість>. Наприклад:

С = ActiveForm. BorderColor

повертає значення кольору рамки активної форми змінній С.

153

БИКОВ І. Ю., ЖИРНОВ М. В., ХУДЯКОВА І. М.

MICROSOFT OFFICE В ЗАДАЧАХ ЕКОНОМІКИ ТА УПРАВЛІННЯ

Більшість властивостей використовується для установлення характеристик об’єктів: <об’єкт>.<властивість> = <значення>. Наприклад:

ActiveWorkbook. Worksheets(“Лист1”). Name = “Новий”

перейменовує робочий аркуш «Лист1» активної робочої книги на «Новий».

4.2. Засоби створення додатків користувача

Існують такі засоби створення та активізації програм в середовищі

Microsoft Office:

1.Застосування макросів. Створення макросу: меню «Сервис» «Макрос» «Начать запись» задати ім’я макросу виконати дії зі створення макросу натиснути кнопку «Остановить запись». Виконання макросу: меню «Сервис» «Макрос» «Макросы» вибрати потрібний макрос зі списку натиснути кнопку «Выполнить». Редагування макросу: меню «Сервис» «Макрос» «Макросы» вибрати потрібний макрос зі списку натиснути кнопку «Изменить».

2.Застосування власного меню. Створення програмного модуля здійснюється через редактор Visual Basic: меню «Сервис» «Ма-

крос» «Редактор Visual Basic» меню «Insert» команда «Module» у вікні редактора написати програмний код. Створення нового пункту меню: меню «Сервис» «Настройка» вибрати категорію «Новое меню» на вкладці «Команды» перетягнути команду «Новое меню» до рядка меню натиснути кнопку «Изменить выделенный объект» змінити ім’я пункту меню. Створення нової команди: меню «Сервис» «Настройка» вибрати категорію «Макросы» на вкладці «Команды» перетягнути команду «Настраиваемая команда меню» до пункту меню натиснути кнопку «Изменить выделенный объект» змінити ім’я пункту меню і додати потрібний макрос, який буде виконуватися після активізації цієї команди меню користувачем.

3.Застосування кнопки на панелі інструментів. Створення про-

грамного модуля здійснюється через редактор Visual Basic: меню

154

Частина IV ОБ’ЄКТНО-ОРІЄНТОВАНА МОВА. РЕДАКТОР VISUAL BASIC FOR APPLICATIONS

«Сервис» «Макрос» «Редактор Visual Basic» меню «Insert»

команда «Module» у вікні редактора написати програмний код. Створення нової кнопки: меню «Сервис» «Настройка» вибрати категорію «Макросы» на вкладці «Команды» перетягнути команду «Настраиваемая кнопка» до панелі інструментів натиснути кнопку «Изменить выделенный объект» змінити ім’я пункту меню, вибрати позначку для кнопки і додати потрібний макрос, який буде виконуватися після натискання цієї кнопки користувачем.

4.Використання форм. Створення форми: меню «Сервис» «Ма-

крос» «Редактор Visual Basic» меню «Insert» команда «UserForm» розмістити елементи управління всередині форми. Для створення програмного коду слід двічі клацнути на одному з елементів (найчастіше це — кнопка); в цьому разі відкриється вікно з оформленим заголовком процедури модуля.

5.Створення функції Microsoft Excel. Програмний модуль створюється за допомогою редактора Visual Basic і оформлюється у вигляді функції. Функція розміщується в повному списку функцій Microsoft Excel, в категорії «Определенные пользователем» і може бути використана звичайним чином в формулах Microsoft Excel.

4.3.Елементи структурного програмування

воб’єктно-орієнтованій мові VBA

При описі форматів операторів і функцій використовуються стандартні угоди:

1)в кутових дужках — < > — вказують параметри, на місце яких в програмі мають бути підставлені конкретні значення;

2)в квадратних дужках — [ ] — вказують необов’язкові фрагменти операторів і функцій;

3)вертикальною рискою — | — розділяють альтернативні варіанти фрагмента оператора;

4)три крапки ... — означають можливе багаторазове повторення фрагмента.

155

БИКОВ І. Ю., ЖИРНОВ М. В., ХУДЯКОВА І. М.

MICROSOFT OFFICE В ЗАДАЧАХ ЕКОНОМІКИ ТА УПРАВЛІННЯ

ПрограманамовіVBA являєсобоюпослідовністьрядківдовжиною до 255 символів. До рядка можна записати один або декілька розділених двокрапкою операторів (команд) мови. Оператор визначає конкретні дії або описує характеристики і значення даних. Перед оператором в рядку може знаходитися позначка, яка відокремлюється від першого оператора в рядку двокрапкою. Позначка оператора складається з будь-якої кількості літер і цифр, але розпочинається з літери. Оператори виконуються почерзі взалежності від їхпояви впрограмі. VBA — це програма-інтер- претатор, яка перевіряє правильність синтаксичного напису оператора зразу після введення з клавіатури і переходу до іншого рядка натисканням клавіші переміщення курсору або Enter. Виконання програми може бути тимчасово припинено оператором STOP.

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

Допустимі символи в алфавіті VBA: великі та малі літери латинського алфавіту, цифри, пропуск і знаки:

= + – * / \ ^ ( ) [ ] $ % &! #,.:; ‘? < > ˝ _

В літерних константах і коментарях дозволяється використання будь-яких символів.

Типи даних. Для зберігання інформації в VBA вживаються константи, змінні, масиви, об’єкти з даними (комірки Excel, записиAccess тощо).

Константа — явно задане значення, що використовується в програмі. Константи розрізняються за типом:

1.Числові:

а) цілі (від –32768 до 32767); наприклад, 3001, 0, –255; б) довгі цілі (від –231 до 231–1); наприклад, 123456, –99988800;

в) дійсні одинарної точності (запис містить до семи цифр і десяткову крапку), наприклад: 12.345, –0.001;

г) дійсні подвійної точності (запис містить до 17 цифр і десяткову крапку), наприклад: –98765.4321;

2.Літерні — довільна сукупність символів, взятих в лапки, напри-

клад: «Привіт!», «1.9.04».

156

Частина IV ОБ’ЄКТНО-ОРІЄНТОВАНА МОВА. РЕДАКТОР VISUAL BASIC FOR APPLICATIONS

3.Дати — беруться з обох боків в знаки #, наприклад, #01/09/2005#.

4.Логічні — True і False — що відповідно означає «Правильно» і «Неправильно».

Дійсні константи можуть бути записані в експоненціальній формі. Значення числа є добуток мантиси на степінь (порядок) числа 10. Запис константи містить мантису і порядок, які відокремлені літерою Е (для констант одинарної точності) або D (для констант подвійної точності); знак числа визначається знаком мантиси. Наприклад: 0.0025Е3, –123.45D-3; число 2.5 може бути подано в вигляді: 2.5Е0, 0.25Е1,.25D1, 25E–1, 25D–1,.025E2,...

Змінна — іменована величина, яка може змінювати своє значення в процесі виконання програми. Змінні розрізняються за типом і одержують значення внаслідок присвоєння їм значень інших змінних, констант, результатів обчислень. Початкове значення числової змінної — 0, літерної — порожній рядок «». Ім’я змінної (ідентифікатор) — послідовність літер і цифр, яка розпочинається з літери. Якщо тип змінної не зазначено, то за замовчуванням вона відповідає дійсній одинарної точності.

Масив — упорядкована послідовність даних, які займають неперервну область в пам’яті. Масив складається з ряду елементів, кожний з яких однозначно характеризується ім’ям (ідентифікатором), загальним для всіх елементів та індексом (порядковим номером елемента в послідовності даних). Змінні з індексами можна використовувати в програмі так само, як і прості змінні.

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

Змінні описуються оператором Dim:

Dim <ім’я змінної> As <тип даних>

У VBA існують такі типи даних: Integer — цілі числа звичайної точності; Long — цілі числа подвійної точності; Single — дійсні числа звичайної точності; Double — дійсні числа подвійної точності;

157

БИКОВ І. Ю., ЖИРНОВ М. В., ХУДЯКОВА І. М.

MICROSOFT OFFICE В ЗАДАЧАХ ЕКОНОМІКИ ТА УПРАВЛІННЯ

String — рядки; Date — дати;

Boolean — змінні логічного типу; Currency — дані грошового формату;

Variant — дані можуть змінювати свій тип при виконанні програми. Наприклад:

Dim Vozrast AS Integer, DataRozd AS Date,

FIO As String

Для опису масиву також можна використати оператор Dim в одному з видів:

1)DIM <ім’я масиву>(<виміри>) AS <тип> [,<ім’я масиву> (<виміри>) AS <тип>...]

< виміри > — список виразів, розділених комами. Наприклад,

DIM A(20, 10) AS String,

Zarplata(N + 5) AS Single

Вирази в дужках вказують на верхню границю зміни індексу. Нижня границя (0 або 1) визначається оператором

OPTION BASE 0|1

до того ж значення 0 установлюється за замовчуванням.

2)DIM <ім’я масиву>(<min> TO <max> [,<min> TO <max>...]) AS <тип>

< min >, < max > — константи або змінні, що визначають діапазон зміни індексу; < тип > визначає тип елементів масиву.

Масив, всі межі зміни індексів якого задаються константами, називається статичним, в іншому разі це — динамічний масив. Масив можна зробити динамічним, якщо при його першому описі не зазначати його меж, а потім повторно декларувати динамічний масив в процесі виконання програми оператором REDIM, який має той самий формат, що й оператор DIM.

158

Частина IV ОБ’ЄКТНО-ОРІЄНТОВАНА МОВА. РЕДАКТОР VISUAL BASIC FOR APPLICATIONS

За областю дії змінні розподіляються на:

внутрішні — діють лише в межах процедури, в якій їх було створено;

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

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

Локальні змінні оголошуються оператором

Private <ім’я змінної> As <тип даних>

Глобальні змінні оголошуються оператором

Public <ім’я змінної> As <тип даних>

Ці оператори мають бути розміщені в заголовку модуля.

УVBA існує багато функцій перетворення типу даних. Наприклад, функція CStr(<числовий вираз>) перетворює числовий вираз на рядок, функція Val(<рядок>) перетворює рядок на число тощо.

Операторприсвоєння. Значеннязмінноїабоелементамасивуможна змінити за допомогою оператора присвоєння, який записується в такому форматі:

<ім’я змінної> = <числовий вираз>

Числовий вираз — комбінація операндів, тобто числових констант, змінних, елементів масивів і звернень до функцій, з’єднаних знаками операцій: + (складання), (віднімання, зміна знака), * (множення), / (ділення), ^ (піднесення до степеня), \ (цілочисельне ділення), MOD (ділення за модулем). При цілочисельному діленні чисельник і знаменник округлюються до цілих значень, виконується звичайне ділення і дробова частиначасткивідкидається. Результатділеннязамодулем— остача, що одержується при цілочисельному діленні.

В операторі присвоєння обчислюється числовий вираз, записаний праворуч від знака «=», і одержане значення присвоюється змінній, ім’я якої знаходиться в лівій частині оператора. При цьому:

не дозволяється присвоєння числового значення літерній змінній і навпаки;

159

БИКОВ І. Ю., ЖИРНОВ М. В., ХУДЯКОВА І. М.

MICROSOFT OFFICE В ЗАДАЧАХ ЕКОНОМІКИ ТА УПРАВЛІННЯ

у ході обчислення виразу значення операндів з меншою точністю перетворюються на значення з більшою точністю;

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

арифметичні операції виконуються по черзі в залежності від їх за-

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

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

функції обробки числових даних:

ABS(x) — модуль числа х;

SIN(x) — синус числа х; кут задається в радіанах; COS(x) — косинус числа х; кут задається в радіанах; TAN(x) — тангенс числа х; кут задається в радіанах; SQR(x) — квадратний корінь з числа х;

EXP(x) — показова функція ех;

LOG(x) — натуральний логарифм числа х;

ATN(x) — арктангенс числа х; кут приймає значення від –π/2 до π/2; INT(x) — найбільше ціле число, яке не перевищує значення х;

функції обробки літерних даних:

LEFT(x, n) — повертає рядок з n початкових символів рядка х; RIGHT(x, n) — повертає рядок з n кінцевих символів рядка х; MID(x, n, m) — повертає рядок з m символів рядка х, починаючи з позиції n;

LEN(x) — повертає ціле число, яке дорівнює кількості символів в рядку х;

TRIM(x) — повертає рядок х, вилучивши з нього всі початкові та кінцеві пропуски;

160

Частина IV ОБ’ЄКТНО-ОРІЄНТОВАНА МОВА. РЕДАКТОР VISUAL BASIC FOR APPLICATIONS

INSTR(n, x1, x2) — повертає номер позиції символу х2, з якого цей символ вперше входить до рядка х1;

функції перевірки типу даних:

IsNumeric(<вираз>) — чи може вираз бути перетворений на число; IsDate(<вираз>) — чи може вираз бути перетворений на дату; IsEmpty(<змінна>) — чи було змінну ініціалізовано;

функції роботи з датами:

Day(<дата>) — виділяє з дати номер дня; Month(<дата>) — виділяє з дати номер місяця; Year(<дата>) — виділяє з дати номер року; Date() — повертає сьогоднішню дату.

Приклади операторів присвоєння:

A = B

B = (A ^ 3 – 12.345) * (1 – (1.000025E –1 – 1/B2) * A) I = I + 1

C = “Літерна константа”

Y = SQR(SIN(X) ^ 2 + COS(X) ^ 2)

Операторирозгалуження. Порядоквиконанняоператоріввпрограмі можна змінити за допомогою операторів умовної передачі керування.

Умова утворюється внаслідок порівняння двох виразів одного типу (чисельних, літерних) за допомогою однієї з операцій порівняння: = (дорівнює), < (менше), > (більше), <= (менше або дорівнює), >= (більше або дорівнює), <> (нерівно). Наприклад: A + B >= 0; SIN(X) < X + 1; S = “Прізвище”.

Результатпорівняння— логічнезначення«Правильно» або«Неправильно». Більш складні умови утворюються об’єднанням кількох простих умов за допомогою логічних операцій NOT (ні), AND (і), OR (або). Результати виконання логічних операцій наведені в таблиці. Розміщення операцій в таблиці відповідає їх пріоритетові; змінити пріоритет можна, взявши частину логічного виразу в дужки. Значення 1 відповідає логічному значенню «Правильно», 0 — «Неправильно».

161

БИКОВ І. Ю., ЖИРНОВ М. В., ХУДЯКОВА І. М.

MICROSOFT OFFICE В ЗАДАЧАХ ЕКОНОМІКИ ТА УПРАВЛІННЯ

Таблиця 4.1

 

 

Значення операндів А і В

 

 

 

 

 

 

 

 

 

A = 0,

A = 0,

A = 1,

A = 1,

A = 0

A = 1

 

B = 0

B = 1

B = 0

B = 1

 

 

 

NOT A

 

 

 

 

1

0

 

 

 

 

 

 

 

A AND B

0

0

0

1

 

 

 

 

 

 

 

 

 

A OR B

0

1

1

1

 

 

 

 

 

 

 

 

 

Приклади

FIO = “Іваненко” OR FIO$ = “Петренко”)

AND Salary > 200

X * X + Y * Y <= R * R AND X > 0 AND Y < 0 NOT (Y < 2 * X AND X >= -2)

1.Умовний оператор IF має наступний формат:

IF <умова> THEN <блок операторів>

[ELSEIF <умова> THEN ‘Можливо багаторазове повторення <блок операторів>]‘ цього фрагмента оператора

[ELSE

<блок операторів>] ENDIF

Перевіряється умова в першому рядку оператора. Якщо вона істинна, виконуєтьсяблокоператорів, якийрозташованийдопершогозрядків ELSEIF. Якщо умова неправильна, провадиться аналогічний процес послідовної перевірки умов у фрагментах ELSEIF. Блоки операторів, що супроводжують фрагмент THEN виконуються, якщо відповідна умова є істинною; блоки операторів, що супроводжують фрагмент ELSE,– якщо відповіднаумоваєнеправильною. Увсіхвипадкахвиконаннябудь-якого блока операторів завершується передачею керування операторові, який стоїть після ENDIF.

162

Частина IV ОБ’ЄКТНО-ОРІЄНТОВАНА МОВА. РЕДАКТОР VISUAL BASIC FOR APPLICATIONS

Приклад

Визначити, якому квадранту належить точка з координатами (x, y), x0, y0. Записати значення номера квадранта до змінної NUM.

IF X > 0 AND Y > 0 THEN

NUM = 1: A = “Блок може складатися з кількох операторів”

ELSEIF X > 0 AND Y < 0 THEN NUM = 4

A = “Оператори блока можна розташувати в кількох рядках”

ELSEIF X < 0 AND Y > 0 THEN NUM = 2

ELSE

NUM = 3 ENDIF

Допускається спрощений формат умовного оператора:

IF <умова> THEN <оператор> [:<оператор>...][ELSE <оператор> [:< оператор>...]]

Приклад

Оператор

IF X > 0 THEN Y = EXP(X): S = “Праворуч” ELSE Y = ABS(X + 1): S = “Ліворуч”

обчислює значення функції

y( x) =

ex , x > 0,

.

 

| x + 1|, x 0

 

2.Умовний оператор SELECT CASE має такий формат:

SELECT CASE <вираз>

CASE <список перевірок 1> <блок операторів>

[CASE <список перевірок 2>

163

БИКОВ І. Ю., ЖИРНОВ М. В., ХУДЯКОВА І. М.

MICROSOFT OFFICE В ЗАДАЧАХ ЕКОНОМІКИ ТА УПРАВЛІННЯ

<блок операторів>]

.

.

.

[CASE ELSE

<блок операторів>] END SELECT

<Вираз> — довільний арифметичний або літерний вираз, значення якогопорівнюєтьсязі<спискомперевірок>. Доспискуперевірокможуть належати відокремлені комами перевірки:

умов рівності іншому виразу (в даному випадку записується тільки цей вираз);

умов порівняння (складаються з ключового слова IS, знака операції порівняння і виразу, порівняння з яким здійснюється);

умов, за якими значення < виразу > потрапляють до діапазону зна-

чень (межі діапазону розділяються словом ТО).

Якщопринаймніодназперевірок, переліченихводномузрядківCASE, даєпозитивнийрезультат, товиконуєтьсяблокоператорів, розташованийпісля рядка з перевірками до наступного рядка CASE або END SELECT. Якщо всіумовивспискахперевірокнеправильні, виконуєтьсяблокоператорів, розташований за рядком CASE ELSE. Після виконання будь-якого блоку операторів керування передається оператору, який стоїть після END SELECT.

Приклад

Обчислити значення функції y(x) в заданій точці х:

 

x+ 3,

x < −1,

> 5

 

− 2x(x+ 2),

−1 x < 0; x

y(x) =

ln(x+1),

0 < x 5,

 

 

 

 

0,

x = 0 .

 

SELECT CASE X

 

 

CASE

0

 

 

Y =

0

 

 

CASE

-1 TO 0, IS >5

 

Y =

-2 * X * (X + 2)

164

Частина IV ОБ’ЄКТНО-ОРІЄНТОВАНА МОВА. РЕДАКТОР VISUAL BASIC FOR APPLICATIONS

CASE IS <-1

Y = X + 3

CASE ELSE

Y = LOG(X + 1) END SELECT

Оператори EXIT IF і EXIT SELECT передають управління оператору, який стоїть після ENDIF або END SELECT, до того, як буде закінчено виконання всіх операторів даного блоку.

Оператори циклу. Існують такі різновиди циклічних структур в мові VBA:

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

цикли з виходом за умовою;

цикли для обробки всіх об’єктів з групи.

1)Цикли з підрахуванням кількості проходжень.

Організація циклічного виконання операторів здійснюється оператором

FOR <змінна циклу> = <вираз 1> TO <вираз 2> [STEP <вираз 3>]

<тіло циклу>

NEXT [<змінна циклу>]

< змінна циклу > — змінна цілого типу або дійсного типу одинарної точності; < вираз 1 > визначає початкове значення змінної циклу; < вираз 2 > — кінцеве значення змінної циклу; < вираз 3 > — приріст змінної циклу (крок); < тіло циклу > містить оператори, що виконуються в циклі.

Оператор циклу виконується в наступному порядку:

1.Змінній циклу присвоюється початкове значення.

2.Виконуються оператори тіла циклу.

3.До поточного значення змінної циклу додається величина кроку.

4.Одержане значення змінної циклу порівнюється з кінцевим значенням. Якщо значення змінної циклу більше ніж кінцеве значення, то керування передається оператору, який стоїть після NEXT, інакше наведена послідовність дій повторно виконується, починаючи з п.2.

165

БИКОВ І. Ю., ЖИРНОВ М. В., ХУДЯКОВА І. М.

MICROSOFT OFFICE В ЗАДАЧАХ ЕКОНОМІКИ ТА УПРАВЛІННЯ

Вживаючи оператор FOR, треба додержуватися наступних правил і рекомендацій:

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

цикл взагалі не виконується, якщо початкове значення більше (або при від’ємному значенні кроку — менше) ніж кінцеве;

можливий вихід з циклу будь-яким оператором переходу з будь-яко- го місця в межах тіла циклу; тоді змінна циклу визначається своїм поточним значенням;

заборонено передавати управління оператору з тіла циклу, обминаючи оператор FOR;

якщо фрагмент STEP випущено, то за замовчуванням значення кроку вважається рівним одиниці;

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

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

Приклад 1 n

Обчислити значення n! = i .

i =1

p = 1

FOR i = 1 TO n p = p * i

NEXT і

Приклад 2

Підприємство випускає 50 видів продукції. Відомі масиви Xj — обсяг виробництва j-го виду продукції і Pj — ринкова ціна одиниці j-го виду

166

Частина IV ОБ’ЄКТНО-ОРІЄНТОВАНА МОВА. РЕДАКТОР VISUAL BASIC FOR APPLICATIONS

продукції (j = 1, 2,..., 50). Обчислити сумарну вартість випущеної продукцію на ринку.

S = 0

FOR j = 1 TO 50

S = S + X(j) * P(j)

NEXT j

2)Цикли з виходом за умовою.

Якщоневідомакількістьповтореньциклу, алевідомаумовайогоза-

кінченняабопродовження, використовуєтьсяоператорDO / LOOP водному з двох форматів:

а) DO

<тіло циклу>

LOOP WHILE | UNTIL <умова>

б) DO WHILE | UNTIL <умова> <тіло циклу>

LOOP

В конструкції WHILE записується умова, неправильність якої визначає вихід з циклу. Неправильність логічної умови в конструкції UNTIL означаєповторенняциклу. Привживанніформату(а) операторитіла циклу завжди виконуються принаймні один раз; при вживанні формату (б) спочатку перевіряються умови повторення циклу і, якщо вони неправильні, оператори тіла циклу не виконуються жодного разу.

Приклад

Для заданого значення змінної х обчислити з погрішністю ε = 10−5 значення функції

cos x = 1

x2

+

x4

x6

 

4!

 

2!

 

6!

Eps = 1E-5:

Y = 1

DY = 1: N =

1

 

 

DO

 

 

 

 

x

2 n

+ … = (1)n

 

 

(2n)! .

n=

0

167

БИКОВ І. Ю., ЖИРНОВ М. В., ХУДЯКОВА І. М.

MICROSOFT OFFICE В ЗАДАЧАХ ЕКОНОМІКИ ТА УПРАВЛІННЯ

DY = — DY * X * X / (2 * N * (2 * N — 1)) Y = Y + DY: N = N + 1

LOOP UNTIL ABS(DY) < Eps

3)Цикли для обробки всіх об’єктів з групи.

До таких операторів належить оператор циклу FOR EACH:

FOR EACH <елемент> IN <група> <оператори>

NEXT <елемент>

Наприклад, цей оператор можна застосувати для того, щоб закрити всі відкриті робочі книги Excel:

FOR EACH Book IN Workbooks()

Book. Close

NEXT Book

Оператор With … End With спрощує записи, які стосуються роботи з об’єктами. Наприклад, фрагмент програми,

ActiveCell. Font. Name = “Arial”

ActiveCell. Font. Size = 11

ActiveCell. Font. Bold = True

який змінює деякі параметри шрифту в активній комірці робочого аркуша Excel, може бути замінений на наступний фрагмент:

With ActiveCell. Font

. Name = “Arial”

. Size = 11

. Bold = True

End With

Оператори EXIT FOR, EXIT DO, EXIT SUB, EXIT FUNCTION дозволяють екстрений вихід з відповідних операторів циклу або процедур.

168

Частина IV ОБ’ЄКТНО-ОРІЄНТОВАНА МОВА. РЕДАКТОР VISUAL BASIC FOR APPLICATIONS

Оператор SET надає змінній посилання на об’єкт. Наприклад, оператор

SET a = pplication. ActiveWorkbook.

Worksheets(“Лист1”)

ототожнює змінну а з робочим аркушем «Лист1» активної робочої книги і надалі можна вживати в коді програми ідентифікатор а для звернення до аркуша «Лист1».

Процедури та функції. Мова VBA підтримує модульний принцип створення програм. Будь-який модуль оформлюється у вигляді процедури або процедури-функції.

Процедури-функції VBA оформлюються таким чином:

FUNCTION <ім’я процедури>(<параметри>) AS <тип результату>

<блок операторів> END FUNCTION

<Ім’я процедури > — ідентифікатор, який утворюється за тими самими правилами, що й імена змінних; < параметри > — записані через кому формальні параметри, які одержують свої значення в момент звернення до функції. Ці значення задають фактичні параметри, які зазначаються в операторі, що містить звернення до даної функції. Щоб звернутися до функції, достатньо включити в який-небудь вираз будьякого оператора модуля виклику запис типу

<ім’я процедури> [(<список фактичних параметрів>)]

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

цій Microsoft Excel та Microsoft Access. < Блок операторів > має містити принаймні один з операторів формату

<ім’я процедури> = <вираз>

що повертають значення функції модулю виклику.

169

БИКОВ І. Ю., ЖИРНОВ М. В., ХУДЯКОВА І. М.

MICROSOFT OFFICE В ЗАДАЧАХ ЕКОНОМІКИ ТА УПРАВЛІННЯ

Кожний з параметрів, розділених комами, описується фрагментом типу

<ім’я параметра> AS <тип даних>

Процедури VBA оформлюються таким чином:

SUB <ім’я процедури>(<список параметрів>) <оператори>

END SUB

Список параметрів може бути відсутнім.

Навідмінувідпроцедури-функції, якаповертаєоднезначення, процедура може повертати значення кількох змінних або масивів.

Виклик процедури SUB здійснюється оператором

CALL <ім’я процедури> [(<список змінних>)]

або звернутись до неї як до макросу. Фактичні параметри передаються таким чином:

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

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

Повернення значень до модуля виклику здійснюється одним зі способів:

за допомогою змінних, оголошених як глобальні або локальні;

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

Приклад

Обчислити кількість сполучень

Cnm =

n!

 

m!(n m)!.

 

FUNCTION FACT(K AS INTEGER)

IF K <= 0 THEN EXIT FUNCTION

P = 1

170

Частина IV ОБ’ЄКТНО-ОРІЄНТОВАНА МОВА. РЕДАКТОР VISUAL BASIC FOR APPLICATIONS

FOR I = 1 TO K P = P * I NEXT

FACT = P

END FUNCTION

...

C = FACT(N) / (FACT(M) * FACT(N — M))

Функція MsgBox. Виводить на екран монітора вікно повідомлення. Синтаксис функції:

MsgBox(prompt:= <повідомлення>, title:= <заголовок>,

buttons:= <тип>)

Тут <повідомлення> — текст, який з’являється в цьому вікні; <заголовок> — надпис в рядку заголовка вікна; <тип> — числовий вираз, який дорівнює сумі значень, що визначають тип кнопок у вікні (0 —

лише кнопка ОК; 1 — ОК і Cancel; 2 — Abort, Retry, Ignore; 3 — Yes, No, Cancel; 4 — Yes, No; 5 — Retry, Cancel), вигляд піктограм (16 — знак

«Стоп»; 32 — знакпитання; 48 — знакоклику; 64 — знак«Інформація»), яка кнопка є активною (0 — перша; 256 — друга; 512 — третя). Замість чисел при зазначенні типу можна вживати символічні константи (наприклад, vbYesNoCancel замість 3, vbOKOnly замість 0 тощо). Функція повертає значення з 1 по 7, якщо користувачем відповідно натиснуто кноп-

ку OK, Cancel, Abort, Retry, Ignore, Yes, No.

Приклад

Оператор

res = MsgBox(Title:=“Помилка введення”, _ prompt:=“Дані не будуть оброблятись”, Buttons:=0 + 48)

повертає змінній res значення 1, коли користувач зробить щиглик на кнопці ОК у формі, яку виводить на екран функція MsgBox (рис. 4.1.).

171

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]