
- •6. Робота з базою даних
- •Створення списку
- •Пошук записів
- •Вставка запису
- •Сортування записів
- •Транспонування бази даних
- •Фільтрація записів у базі даних
- •Використання Автофильтра
- •Відновлення початкової бази даних
- •Пошук записів за розширеним фільтром
- •Функції бази даних
- •Обчислення з використанням функцій бази даних
- •7. Формування зведених таблиць
- •8. Статистична обробка даних
- •9. Макроси
- •Створення макросу
- •Виконання макросу
- •10. Використання інструменту “Подбор параметра” для розв’язання економічних та управлінських задач
- •11. Функції користувача
- •Контрольні запитання
11. Функції користувача
Функції користувача будуються в модулі редактора Visual Basic for Application. Редактор VBA відкривається командою СервисМакрос Редактор VBA (Ctrl-F11). Вікно редактора VBA складається з трьох частин (рис.14): Project-VBA Project, Properties та вікна розкритого модуля, форми чи процедури.
Вікно Project-VBA Project містить перелік модулів і форм, які входять у проект. Подвійне клацання по імені модуля чи форми призведе до відкриття програмного коду у центральному вікні.
Для створення нового об’єкта потрібно виконати команду InsertModul, InsertUserForm, InsertProcedure.
Функція користувача створюється як модуль у складі книги. Порядок створення функції користувача:
Викликати вікно редактора VBA.
Рис.14
Вставити новий модуль (Insert/Modul).
Ввести програмний код, дотримуючись такої структури:
Function name (arg)
[Statements]
End Function
name – ім’я функції;
arg – аргументи функції, які записуються через кому;
statements – послідовність команд, які складають тіло програми.
Закрити вікно редактора.
Створена функція з’явиться у категорії Функції користувача вікна Майстра функцій.
Приклад 1. Створити функцію користувача для розрахунку комісійних. Комісійні розраховуються залежно від обсягів продаж за правилом: при обсягах продажу від 0 до 9999 відсоток комісійних становить 8%; від 10000 до 19999 – 10 %; від 20000 до 39999 – 12 %; більше 40000 – 14 %.
Розв’язання
В одному з листів книги створити довільну таблицю з прізвищами та обсягами продаж відповідних співробітників (рис.15).
Відкрити вікно редактора VBA командою Сервис МакросРедактор VBA або комбінацією клавіш Ctrl-F11.
Виконати команду InsertModul.
У вікні Properties надати ім’я модулю: FuncPolz.
Рис.15.
У вікні Книга (ім’я) – FuncPolz (Code) ввести програмний код, який складається з послідовності команд (рис.16).
Пояснення по програмному коду:
Початок і кінець функції користувача сприймається програмою за кодовими словами:
Function
End Function
Після кодового слова Function записується її ім’я ( в даному випадку Комис). В дужках записуються аргументи, які має дана функція. В нашому випадку – один аргумент: Продажа.
У тілі програми використовується структура розгалуженого алгоритму: ЯКЩО умова ТО інструкція1 ІНАКШЕ інструкція2. Ця структура описується конструкціями:
1. If умова Then інструкція1 Else інструкція2
Допускається блочна структура запису такої конструкції:
If умова Then
інструкція1
Else
інструкція2
End If
При блочній структурі використовується оператор End If, який визначає завершення оператора If.
Рис.16.
2. If умова1 Then
інструкція1
ElseIf умова2 Then
інструкція2
ElseIf умова3 Then
Інструкція3
End If
Оператор ElseIf використовується при перевірці множинних умов.
Таким чином, зміст програмного коду, який становить тіло нашої функції КОМИС, полягає у таких інструкціях: якщо обсяг продаж є меншим або рівним 9999, то комісійні дорівнюють добутку обсягу продаж на 0,08, інакше (тобто більше 10000), якщо обсяг продаж менший або рівний 19999, то комісійні дорівнюють добутку обсягу на 0,1, інакше (тобто більше 20000) якщо обсяг продаж менший або рівний 39999, то комісійні дорівнюють добутку обсягу на 0,12, інакше (тобто більше 40000) комісійні дорівнюють добутку обсягу на 0,14.
Наступним кроком є закриття вікна редактора.
Щоб використати щойно створену функцію, потрібно у вікні майстра функцій вибрати категорію Определенные пользователем, вибрати ім’я функції Комис.
У вікні аргументів буде лише один аргумент Продажа, яким є адреса клітинки з цифрою обсягу продаж (у даному випадку В2).
Приклад 2. Створити функцію користувача для розрахунку комісійних. Комісійні для штатних менеджерів розраховуються за правилом попередньої задачі, а якщо менеджер працює не в штаті фірми, то він отримає 75 % від номінальних комісійних.
Розв’язання
Така функція користувача повинна містити два аргументи: обсяг продаж і ставка. Ставка буде визначати є співробітник штатним чи ні.
Програмний код матиме такий вигляд:
Використовувати функцію можна аналогічно до описаного вище.
Рис.17.Результати застосування функції КомисСт