Робота 11. Створення власних функцій користувача засобами Visual Basic.
Мета роботи: виробити практичні навички по створенню власних функцій користувачазасобами VBA
Теоретичні відомості
VBA - мова програмування (розшифровується як Visual Basic for Application) була розроблена компанією Microsoft. Дана мова не являється самостійною, а призначена лише для автоматизації процесів в пакеті MS Office. VBA широко використовується в Excel, я також в Access, Word та інших програмах пакету.
VBA - проста мова програмування. Вивчивши її можна надавати команди Excel, що робити з колонками, рядками, значеннями в комірках, переміщати/додавати/сортувати аркуші, виводити заздалегідь запрограмовані повідомлення, писати свої формули та функції. Суть мови заключається в оперуванні об'єктами (що відносить її до об'єктно-орієнтованого програмування).
Щоб працювати з VBA кодом, нам потрібен редактор (Visual Basic Editor), який вже є встановлений в Excelпо замовчуванню. Відкрити його можна натиснувши комбінацію клавіш "ALT+F11".
Об'єкти (Objects)
Об'єкт - це елемент, структурна частинка Excel, а саме: книга, аркуш, діапазон, комірка. Дані об'єкти мають ієрархію, тобто підпорядковуються один одному. Схематично структуру ієрархії Excel можна зобразити наступним чином:
Найголовніший об'єкт це Application, що відповідає самій програмі Excel. Далі іде Workbooks (книга),Worksheets (аркуш), Range (діапазон, або окрема комірка).
Наприклад, щоб звернутися до комірки "A1" на аркуші, нам потрібно буде прописати наступний шлях з врахуванням ієрархії:
Таким чином звертаються до найменшого об'єкту в Excel - комірки.
Колекції (Collections)
В свою чергу об'єкти мають "колекції". Колекція - це група об'єктів однакового класу. Окремі елемети колекції є також об'єктами. Так, об'єкти Worksheets є елементами колекції об'єкту Worksheet, який містить також й інші колекції та об'єкти:
• ChartObjects (елемент колекції об'єкту ChartObject)
• Range
• PageSetup
• PivotTables (елемент колекції об'єкту PivotTable).
Властивості (Properties)
Кожен об'єкт має властивості. Наприклад, об'єкт Range має властивість Value або Formula.
Worksheets(“Sheet1”).Range(“A1”).Value або Worksheets(“Sheet1”).Range(“A1”).Formula
В даному прикладі, властивість відображає значення, яке введене в комірку або введену формулу.
Також, через властивість Formula можна не тільки отримати формулу, але і записати її:
MsgBox Range(“A1”).Formula - отримаємо повідомлення з формулою в комірці "А1";
Range(“B12”).Formula = “=2+6*100” - вписуємо формулу =2+6*100 в комірку B12.
Методи (Methods)
Яким чином ми можемо керувати вмістом діапазону або комірки. Для цього в VBA існують, так звані, методи (команди "що зробити"). При написанні коду методи відділяються від об'єкта крапкою, наприклад:
Range("A1").Select або Cells(1, 1).Select
Даний метод вказує вибрати (Select) комірку "A1".
Далі видалимо значення в даній комірці. Для цього напишемо наступний код.
Selection.ClearContents
Тут програма "бере" те, що ми віділили (Selection) та видаляє його вміст (ClearContents).
Хід роботи:
Задача 1.
Створити функцію користувача і протестувати її для набору вихідних даних, наведених у таблиці
a
b
10,4
-9,9
Для розв’язування цього завдання необхідно насамперед на робочому аркуші Excel створити таблицю, яка буде містити вихідні дані і результати обчислень
Завантажте середовище Visual Basic (Alt+F11).
Виконайте команду Insert – Module і у відкритому вікні для запису модуля наберіть наступні команди:
Function func1(a, b)
func1 = (2 * a) / (3 * b)
End Function
Поверніться у робочий аркуш до створеної таблиці значень
Поставте курсор у комірку С2 і виконайте команди Формулы – Вставить функцию – у меню Категорія оберіть Определенные пользователем – серед всього переліку функцій виберіть func1 і натисніть ОК.
До аргументів функції занесіть адреси комірок А2 та В2 відповідно і натисніть ОК.
У комірці С3 виконайте обчислення за цією ж функцією. Зверніть увагу, що при діленні на нуль у комірці з’являється повідомлення #ЗНАЧ. Спробуйте змінити числове значення у комірці В3 і оцініть результат.
Задача 2.
Створити власну функцію користувача Excel, яка б переводила МЕГАБІТИ в КІЛОБАЙТИ.