Для зміни записаного макроса необхідні базові знання роботи з мовою програмування VBA. Ця мова орієнтована на роботу з об'єктами (Objects), якими можуть бути робочі книги (Workbooks), аркуші (Sheets), діапазони комірок (Range), комірки (Cells) тощо. Об'єкти можуть бути описані за допомогою методів (Methods) та властивостей (Properties). Метод — це дія, яку може виконати об'єкт, або яка може бути застосована до об'єкта. Властивість — це характеристика об'єкта, яка може бути йому надана.
Проектом називають сукупність об'єктів і модулів, де записані макроси для об'єктів.
Викликається пункт меню Сервис/Макрос/Макрос,вибирається ім'я потрібного макроса і натискається кнопка Изменить. Відкриється вікно редактора мови VBA, у якому можна побачити вікно проекту, вікно властивостей об'єкта та вікно модуля зі змістом інструкцій макроса.
Сукупність інструкцій макроса розміщується у процедурі, яка завжди починається службовим словом Sub ім'я макроса(), містить інструкції, які створювалися під час запису макроса, і закінчується службовим словом End Sub.
Наприклад:
* інструкція ActiveSheet.Range("Bl:C5").Clearозначає: у активному робочому аркуші у діапазоні комірок В1 :С5 видалити зміст (очистити комірки).
ActiveSheet.Range("В1:C5")— це складний об'єкт, Clear— це метод.
* інструкція ThisWorkbook.Sheets("JlИCT20").Activateозначає: у поточній робочій книзі активізувати робочий аркуш із назвою Лист20.
ThisWorkbook.Sheets("Лист20")це складний об'єкт, Activate— це метод.
* інструкція Cells(l, 2).Font.Bold = Trueозначає: шрифт у комірці, що знаходиться у першому рядку та другому стовпчику таблиці (тобто В1), має бути жирним.
Cells(l, 2).Font- це об'єкт, Bold— властивість об'єкта, = True— значення властивості об'єкта.
* інструкція Cells(l, 2).Value= 18означає: у комірку В1 записати значення 18.
Cells(l,2) — об'єкт, Value— властивість об'єкта, = 18 — значення властивості.
Можна змінити значення властивості, дописати нові інструкції по роботі з об'єктами, видалити зайві інструкції тощо. Для повернення у середовище Microsoft Excel викликається пункт меню редактора Visual Basic — Файл/Закрытьі повернутися в Microsoft Excel або просто натиснути на клавіші Alt+Q.
У середовищі редактора Visual Basic можна створювати, редагувати та виконувати макроси самостійно. Для цього викликається пункт меню Сервис/Макрос/Редактор Visual Basic.Відкриється вікно редактора, треба вибрати модуль у вікні проектів, або відкрити новий модуль (пункт Вставка/Модуль).
У вікні модуля почати записувати процедуру.
Наприклад:
Створити процедуру, яка у активній робочій книзі відкриває аркуш Лист 20, очищає зміст комірок В1:С5, у комірку В1 заносить число 18, вибирає шрифт у комірці TimesNew Roman, робить його жирним із розміром шрифта 16:
Sub Му()
ThisWorkbook.Sheets(«Лист20»).Activate
ActiveSheet.Range(«B1 :C5»).Clear
Cells(l, 2).Value=18
Cells(l, 2).Font.Name = «TimesNew Roman»
Cells(l, 2).Font.Bold = True
Cells(l, 2).Font.Size=16
End Sub
Виконати процедуру можна, якщо натиснути на клавішу F5 або вибрати пункт меню Запуск/Запуск підпрограми.
Текст модуля можна роздрукувати на принтері: вибирається пункт меню Файл/Печать,вибрати параметри для друку і натиснути на Ok.
Автоматизація виконання макросів
Для швидкого виконання макроса на робочому аркуші можна створити кнопку-графічний об'єкт і призначити цій кнопці створений раніше макрос. Натискаючи мишкою кнопку, макрос можна виконати.
Для створення кнопки викликається панель інструментів Рисование,вибирається замкнутий графічний об'єкт (прямокутник, овал тощо) і розташовується на зручному місці робочого аркуша. Кнопка супроводжується текстом — назвою дії, що виконує макрос. Потім натискається права кнопка мишки на межі графічного об'єкта і вибирається пункт контекстового меню Назначити макрос,із списку створених макросів вибирається потрібний і натискається Ok.
Також можна створювати в меню новий пункт, за допомогою якого буде виконуватися вибраний макрос. Для цього вибирається пункт головного меню Вид/Панели инструментов/Настройка ...
У вкладці Команди з зони Категории вибирається пункт Макроси.
З зони Команди повідомлення Настраиваемая команда меню переміщується мишкою у потрібний пункт меню:
Для створення нової назви для пункту меню натискається кнопка Изменить выделенный обьект, записується нова назва і призначається макрос.
Наприклад:
У пункті головного меню Формат/Листстворити пункт Очистить,який знищуватиме всю інформацію у активному робочому аркуші.
Використовується макрос з назвою ClealAll:
Sub ClealAll()
ActiveSheet.Cells.Clear
End Sub
Пункт меню створюється, як показано вище.
Загальний вигляд меню після створення нового пункту:
Створення функцій користувача
Поряд із стандартними функціями, які виконують дії з даними (МИН, СРЗНАЧ, СУММ, ЕСЛИ тощо), користувач може створити свою власну функцію, яка буде виконувати дії над даними, які потрібні користувачеві.
За виглядом функція користувача не відрізняється від стандартних:
= ім'я функції_користувача (аргументи)
і вводиться у комірку, де треба виконати потрібну процедуру над даними -аргументами.
Але для того, щоб подані аргументи оброблялись належним чином, мовою VBA створюється процедура — функція.
Процедура Function є послідовністю інструкцій мови Visual Basic, обмежених інструкціями Function і End Function. Процедура Function схожа на процедуру Sub, однак на відміну від останньої вона повертає обчислене значення у робочій аркуш, звідки вона була викликана у супроводі формальних аргументів. Отримані аргументи (константи, змінні, або вирази) процедура Function підставляє в тому ж порядку замість власних умовних аргументів, які містяться у дужках після імені функції.
У поданій нижче таблиці клієнтів є формули, за якими визначаються вихідні результати — Податок і Сума замовлення.
10% від загальної вартості, якщо вона > 50000
Податок = 12% від загальної вартості, якщо вона > 25000
15% від загальної вартості, якщо вона > 10000
18% від загальної вартості, якщо вона < 10000
Сума замовлення = Податок + Загальна вартість
Необхідно створити:
одну функцію користувача, яка б вираховувала податок, величина якого за умовою залежить від загальної вартості, тобто від одного аргумента, та
другу функцію користувача, яка б вираховувала суму замовлення, значення якої залежить від податку та загальної вартості, тобто від двох аргументів.
Перша функція реалізовується за допомогою алгоритму з розгалуженням.
1.Перевіряється поточне значення загальної вартості (Cost) і якщо це значення перевищує 50000, тоді податок (Tax) вираховується як 10 % від загальної вартості.
2. Якщо загальна вартість дорівнює або менша за 50000, але перевищує 25000, тоді податок вираховується як 12 % від загальної вартості.
3. Якщо ж загальна вартість дорівнює або менша за 25000, але перевищує 10000, тоді податок вираховується як 15 % від загальної вартості.
4. Якщо ж жодна з перерахованих вище умов не виконується, то загальна вартість менша або дорівнює 10000, і податок у цьому випадку нараховується як 18 % від загальної вартості.
Друга функція реалізується за допомогою лінійного алгоритму.
Нижче подані алгоритми для реалізації вказаних функцій.
Блок-схема алгоритму для визначення податку:
Блок-схема алгоритму для визначення суми замовлення (TotalCost)яка залежить від податку (CountTax) і загальної вартості (Cost):
Викликається редактор VBA, активізується модуль з уже створеними макросами або створюється новий модуль, де записуються інструкції для виконання функції визначення податку: