Теоретична довідка до Практичної роботи 6 на тему Середовище VBA
« НазадТеоретична довідка до Практичної роботи №6 Середовище VBAРедактор Visual Basic, вбудований у більшість програм Microsoft Office, це середовище для створення, редагування макросів Office та управління ними, створення користувацьких вікон та для розв’язування інших задач, пов’язаних з опрацюванням програм написаних мовою VBA. Вихідний код макросу зберігається у спеціальній частині файлу даних, яка називається модулем. Файл документа відповідного типу будь-якого з VBA-додатків може містити один або декілька модулів чи не містити їх взагалі. Модулям, збереженим у документах Word, за замовчуванням присвоюється загальна назва Project (проект), а в документах Excel — VBAProject. Щоб переглянути збережені модулі необхідно запустити редактор VBA. Для цього на стрічці вибрати вкладинку Разработчик і у групі Код клацнути на кнопці Visual Basic або натиснути комбінацію клавіш <Alt+Fll>. Загальний вигляд вікна редактора VBA подано на рис.7: Вікно має стандартну структуру: рядок меню, панелі інструментів, робоча область та рядок стану. Меню File (Файл) містить команди, необхідні для збереження змін у проекті VBA та виведення на екран чи на друк вихідного коду макросів. Меню Edit (Правка) містить команди, призначені для управління вихідним кодом макроса у вікні Code, а також об’єктами у формах. Меню View (Вид) містить команди для відображення на екрані різних вікон редактора VBA. Команди меню Insert (Вставка) дозволяють додавати у проект різні об’єкти — процедури, модулі, форми, класи та ін. Меню Format (Формат) містить команди для створення користувацьких діалогових вікон. Команди цього меню дозволяють вирівнювати об’єкти у формі, змінювати розміри та зовнішній вигляд елементів управління, а також виконувати багато інших операцій. Меню Debug (Отладка) містить команди, призначені для тестування та відладки макросів. Команди даного меню дозволяють запускати макрос із заданої точки, відслідковувати виконання макроса по крокам і зупиняти макрос у будь-який момент його виконання. Меню Run (Запуск) містить команди, призначені для запуску макроса на виконання, переривання чи відновлення його роботи, а також для повернення макроса у початковий стан. Меню Tools (Сервис) містит , команди для вибору макроса або для одержання доступу до зовнішніх бібліотек макросів. За допомогою інших команд цього меню можна одержати доступ до діалогового вікна Option (Параметри) редактора VBA та вікна властивостей проекта VBA. Меню Add-lns містить всього одну команду — Add-In Manager, яка виводить на екран діалогове вікно Add-In Manager, у якому можна завантажувати, вивантажувати, реєструвати та визначати поведінку програм-доповнень (надбудов). Меню Window (Окно) містять команди ідентичні командам будь-яких інших додатків Windows. Меню Help (Справка) команду для доступу до довідкової системи редактора VBA, їй прзначена стандартна клавіша <F1>. Закінчити роботу у редакторі VBA або вийти з нього можна, вибравши команду меню File→Close and Return to <додаток> або натиснувши комбінацію клавіш <Alt+Q>. Вікно редактора VBA містить чотири готові панелі інструментів. ■ Standard (Стандартная). Ця панель виводиться на екран при першому запуску редактора VBA. Панель інструментів Standard містить 19 кнопок, які виконують різні функції: збереження результатів роботи, додавання нових форм і модулів, редагування та виконання програм. ■ Edit (Правка). Кнопки цієї панелі інструментів дозволяють редагувати текст у вікні Code (вікні програмного коду). Вони дублюють команди меню Edit. ■ Debug (Отладка). Кнопки цієї панелі дозволяють запустити програму на виконання, простежити за ходом її роботи та , а также виявити різні помилки в програмах ■ UserForm (Пользовательская форма). Ця панель використовується при проектування форм. Більшість її кнопок дублюють команди меню Format. У редакторі VBA використовується багато вікон, але слід пам’ятати, що вікон форм і програмного коду може бути кілька, вікна інших типів можуть бути тільки по одному. Вікно провідника проекту (Project – <імя проекту>) містить список всіх файлів, що входять до даного проекту і призначене для швидкого доступу користувача до елементів списку. Вікно Project (Проект) за звичай відкривається при запуску редактора Visual Basic. Якщо вікно Project (Проект) закрите, то відкрити його можна, вибравши в меню View (Вид) команду Project Explorer (Провідник по проектам). Вікно властивостей об'єкту (Properties) містить список властивостей активної екранної форми або активного об'єкта управління, розташованого на активній формі. Властивості визначають зовнішній вигляд екранної форми або відповідного об'єкту управління та їх характеристики. Вікно властивостей поділено на дві колонки. В лівій знаходяться назви властивостей об'єкта, ім'я якого вказано у верхньому списку, а у правій – їх значення, які вибираються зі списку або вводяться з клавіатури. Список властивостей подано на двох закладинах – Alphabetic (Алфавітний) і Categorized (За категоріями). Вікно редагування коду (Code) відображає програмний код для опрацювання подій. Щоб активізувати це вікно необхідно двічі клацнути на об’єкті управління. Вікно редагування форм (UserForm) представляє собою робочу область, на якій користувач може розміщувати різні об’єкти або елементи управління: написи, поля, кнопки, перемикачі, малюнки тощо. Елементи управління вибираються з панелі інструментів Toolbox, рис. 8. Щоб помістити на форму елемент необхідно знайти потрібний елемент на панелі інструментів і клацнути на ньому лівою кнопкою миші. Перемістити покажчик миші на те місце на формі, де буде знаходитися вибраний елемент, і клацнути лівою кнопкою миші — елемент буде додано на форму так, що у вказаній точці буде знаходитися його верхній лівий куточок.Розміри форм та елементів можна змінювати за допомогою маркерів або задавати у вікні властивостей. Для створення нового модуля необхідно виконати наступні дії: 1. Вибрати потрібний документ. 2. Активізувати редактор VBA (<Alt+Fll>). 3. У вікні Project Explorer виділити сам проект або один з його компонентів. 4. Вибрати команду редактора VBA Insert→Module (Добавить→Модуль) або клацнути кнопку Insert на панелі інструментів Standard та вибрати команду Module. У результаті редактор VBA відкриє на екрані вікно програмного коду нового модуля, ім’я якого за замовчування Modulen, где n— порядковий номер модуля. Для створення нової процедури в існуючому модулі, необхідно спочатку відкрити вікно Code для даного модуля (View=>Code). Код процедури розміщують у будь-якому місці модуля. Процедура починається оператором Sub(підпрограма) і закінчується оператором End Sub або оператором Function (функція) і закінчується оператором End Function. Модулі не зберігаються у окремих файлах тому, щоб використовувати один і той самий модуль у різних проектах його слід експортувати у окремий файл з розширенням .bas вказівкою File→ Export File, вказати місце зберігання та ім’я, а потім імпортувати його у потрібний проект вказівкою File→Import File. Для виконання деякої процедури вибрати команду меню редактора VBA Tools→ Macros і у діалоговому вікні Macros у списку Macro Name вибрати ім’я процедури та клацнути на кнопці Run (Выполнить) або просто натиснути клавішу <F5>. Більш зручний запуск процедур здійснюється за допомогою кнопки на панелі швидкого доступу. Для її створення необхідно виконати наступні дії: 1. Клацнути вгорі над документом на кнопці Настройка панели быстрого доступа і у контекстному меню вибрати команду Другие команды…(Рис. 9) 2. У діалоговому вікні Параметры Word у списку Выбрать команды из клацнути Макросы. 3. У списку зліва виділити потрібне ім’я і клацнути кнопку Добавить(Рис. 10). В результаті у список відібраних команд буде додано ім’я програми, а після натиснення на кнопку ОК на панелі швидкого доступу з’явиться нова кнопка. 4. Для того щоб змінити зображення на створеній кнопці необхідно у діалоговому вікні Параметры Word клацнути Изменить і у діалоговому вікні Изменение кнопки вибрати готове зображення та закрити вікно. Якщо при створенні макроса в Microsoft Word комбінацію клавіш для його запуска не було призначено, то це можна зробити пізніше, у діалоговому вікні Параметры Word. Для призначення комбінації клавіш макросу (чи VBA-програмі) у Word виконати наступні дії: 1. В меню Файл вибрати команду Параметры і у вікні Параметры Word перейти у розділ Настройка ленты. Клацнути на кнопці Настройка, розміщеній у нижній частині вікна. 2. У вікні Настройка клавиатуры вибрати у списку Категория значення Макросы, потім у списку Макросы вибрати ім’я програми (чи макросу). 3. У полі Новое сочетание клавиш ввести призначену для виклику програми комбінацію клавіш і клацнути на кнопці Назначить, а потім на кнопці Закрыть. Тепер викликати вказану VBА- програму можна буде за допомогою призначеної комбінації клавіш. Для визначення (або зміни) комбінації клавіш у середовищі Microsoft Excel, треба виконати наступні дії: 1. На стрічці перейти на вкладинку Вид і у групі Макросы вибрати в меню кнопки Макросы команду Макросы. Відкриється діалогове вікно Макрос. У списку Имя макроса вибрати програму і клацнути на кнопці Параметры. 2. У діалоговому вікні Параметры макроса ввести клавишу, яка у комбінації з <Ctrl> буде використовуватися для виклику вказаної VBA-програми. Для поверненя в програму клацнути на кнопці ОК. Для видалення деякого модуля потрібно виділити його і виконати вказівку File→ Remove object_name. Додаток 2. Призначення елементів панелі інструментів
1. Pointer (Покажчик) - для позиціювання покажчика Мишки; 2. Label (Напис) - розміщує на формі текстові об’єкти типу написи, редагувати які під час виконання додатку неможливо; 3. TextBox (Текстове поле) - розміщує на формі поле для введення текстової інформації, чисел, дат; 4. ComboBox (Поле зі списком) - створює на формі об’єкт, що містить одночасно поле введення тексту і список значень, введений текст додається до елементів списку; 5. ListBox (Список) - створює на формі список для вибору одного чи декількох значень із запропонованого списку; 6. CheckBox (Прапорець) - розміщує на формі індикаторний перемикач, призначений для формування умов виконання чи певних налаштувань, значення якого (Value) при встановленій «галочці»- 1, за відсутньої - 0, позначений, але неактивний стан - 2; 7. OptionButton (Перемикач) - створює на формі альтернативний перемикач для вибору налаштування чи режиму виконання програми; 8. Togglebutton (Вимикач) – кнопка має два значення - увімкнено та вимкнено. 9. Frame (Рамка) - створює на формі рамку із заголовком для логічного групування об’єктів; 10. CommandButton (Командна кнопка) - розміщує на формі кнопки управління для ініціювання дій, виконання команд і т.д.; 11. TabStrip (Набір вкладинок) додає на форму набір вкладинок 12.MultiPage (Набір сторінок) додає на форму багатосторінковий елемент (контейнер для інших об’єктів) 13. ScrollBar (Вертикальна смуга прокручування) - розміщує на формі вертикальну смугу прокручування; 14. Spinbutton (Лічильник) – кнопка додається до клітинки або текстового поля і використовується для збільшення або зменшення значення 15. Image (Зображення) - створює на формі поля для відображення графічних зображень; 16. RefEdit (Поле визначення посилання) додає на форму поле введення, призначене для спрощення запису посилань на клітинки та діапазони Excel. Ця кнопка наявна тільки у Microsoft Excel. Об’єктна структура мови VBAГоловна перевага мови VBA полягає в тому, що вона належить до мов об’єктно-орієнтованого програмування. В основу програмування мовою VBA покладено таке поняття, як об’єкт. Об’єкт дозволяє інкапсулювати дані, що описують деякий елемент, разом з програмним кодом, призначеним для опрацювання цих даних, тобто об’єднати їх в одне ціле, що має назву об’єкт. У кожному VBA- додатку є свій унікальний набір об’єктів з власними властивостями (характеристиками даного елементу) і методами (командами для опрацювання цих властивостей). В результаті доступ до властивостей об’єкта (тобто характеристик стану деякого елемента у додатку) можливий тільки за допомогою його власних методів. Управління станом елемента здійснюється за допомогою надісланих йому повідомлень, що вказують об’єкту на необхідність виконати той чи інший метод для досягнення результату. Самі повідомлення генеруються системою у відповідь на дії користувача чи дії інших програм, що в даному випадку називаються подіями. Одне з важливих понять об’єктно-орієнтованого програмування — це поняття класу, що описує типову структуру схожих за призначенням елементів. В системі зберігається програмний опис кожного використаного класу, на основі якого при необхідності створюються екземпляри об’єктів. Наприклад, в програмі може бути описано клас кнопки, що відображається у вікнах додатків. Кожна окрема кнопка (екземпляр об’єкта цього класу) в будь-якому вікні додатку створюється на основі цього опису, але відрізняється від інших своїми властивостями (розміром, кольором, написом, виконуваною після клацання операцією і т.д.). Крім методів і властивостей об’єкта, існує таке поняття, як подія. Подія – це деяка дія, що може бути виконана по відношенню до об’єкта і на яку необхідно запрограмувати відповідну реакцію даного об’єкта. Наприклад, подією може бути клацання на зображенні об’єкта, натиснення клавіші на клавіатурі чи переміщення покажчика миші над зображенням об’єкта. В цілому, суть програмування мовою VBA полягає у створенні коду програм (методів), які генерують необхідні відгуки на відповідні події. Загальні принципи побудови VBA-програмПроцес створення VBA- програми можна розділити на кілька етапів: - На першому етапі проводиться детальний аналіз поставленої задачі. Потім проектують програму, а саме ті елементи, з яких буде складатися майбутня програма: екранна форма, елементи управління та процедури, що відповідатимуть за обробку подій з формою та її елементами управління. - На другому етапі реалізують проект: розробляють зовнішній вигляд форм з описом властивостей їх елементів та описують процедури обробки необхідних подій. Для цього у середовищі редактора VBA для створення нової форми вибрати команду Insert→UserForm, і на екран буде виведено вікно нової порожньої форми. Потім на форму копіюють елементи управління та пишуть програмний код у вікні програмного коду View→Code. - На третьому етапі здійснюють тестування створеної програми. Для запуску програми на виконання дати команду меню редактора VBA Run (Выполнить...). При тестуванні програми перевіряється правильність її реакції на події, чи правильно опрацьовуються введені дані, чи розв’язує програма поставлену задачу. - При виявленні будь-яких помилок переходять до четвертого етапу розробки програми – проведення відладки. На цьому етапі за допомогою різних засобів виявляють причину появи помилки в роботі програми і приймається рішення про способи її усунення. Далі повертаються до другого етапу і вносять в програму необхідні зміни, а потім знову переходять до третього етапу і повторюють її тестування. VBA-програма не є самостійним структурним елементом серед об’єктів мови VBA, і тому редактор VBA розпізнає по іменам не програми, а процедури, модулі та проекти. У VBA рядки програмного коду об’єднані у процедури, які розміщені у модулях, а модулі розміщені у проектах. Тобто програмний код складається з наступних елементів: ■ Оператор — це найменша одиниця VBA-коду. Він призначений для визначення змінної, встановлення параметрів чи виконання будь-якої дії у програмі. ■ Процедура — це окрема одиниця програмного коду VBA, яку можна викликати за іменем для виконання. Будь-яка процедура містить один або кілька операторів. ■ Модуль — це іменована одиниця, що складається з однієї чи кількох процедур та розділу оголошень, у якому оголошують змінні, константи та користувацькі типи даних, а також встановлюють параметри компілятора. ■ Проект — включає всі модулі, форми і зв’язані з додатком об’єкти, причому проект зберігається разом з даним документом. Основні елементи мови програмування Visual Basic For Application (VBA)Алфавіт мови складається з таких символів:
Використовуючи алфавіт, будують елементи мови: службові слова, імена констант і змінних, вирази, імена функцій і ін. До основних службових слів відносять Data, Dim, Do – Loop, End, For – to – step, Gosub, Goto, If – then – else, Input, Next, On, Print, Read, Restore, Return, Stop, While, Select Case і т.д. Змінна – це іменована зарезервована область оперативної пам’яті для тимчасового зберігання даних визначеного типу. Кожна змінна має ім’я, яке задається з використанням таких правил: - ім’я може складатися з букв, цифр та символу підкреслення (_), але першим символом в імені повинна бути літера (буква) - ім’я кожної змінної повинно бути унікальним і не співпадати з зарезервованими словами; - ім’я не може містити більше 255 символів. - ім'я не може містити розділових знаків, пробілів і наступних символів: %, &, !, #, @, $. Наприклад, ClassName, Dobutok_Dodatnyh – правильні імена; 1Name, Print, Suma vsih – не правильні імена змінних. Константа – це величина, значення якої не змінюється в процесі виконання програми, її ім’я задають за тими ж правилами, що і імена змінних. Спосіб збереження змінних та констант визначається за типом даних VBA: Byte - мале ціле число без знаку (от 0 до 255), що займає в пам’яті 1 байт Integer - середнє ціле число із знаком (от –32768 до 32767), що займає в пам’яті 2 байта Long - велике ціле число (від -2147483648 до 2147483647), що займає в пам’яті 4 байта Single - число с плавающою точкою(від -3.402823E38 до 3.402823E38 ), що займає в пам’яті 4 байта Double - число с плавающою точкою(від -1.79769313486232E308 до 1.79769313486232E308), що займає в пам’яті 8 байт Currency - велике число у грошовому форматі(від -922337203685477.5808 до 922337203685477.5807), що займає в пам’яті 8 байт Decimal - число с плавающою точкою(±79 228 162 514 264 337 593 543 950 335 без десяткової точки або 28 цифр після десяткової точки), що займає в пам’яті 14 байт Date - дата або час, що займає в пам’яті 8 байт Boolean - логічна змінна, що може набувати два значення: True і False, що займає 2 байта String - рядоксимволів довільної довжини (1 байт на 1 символ), від 0 до 2 млрдю символів String*k - рядоксимволів фіксованої довжини k(k – будь-яке число), від 0 до 65 400 символів Variant - змінна може набувати будь-яке значення, не менше 16 байт пам’яті. Крім простих величин у VBA використовують структуровані величини – масиви. Масив— це набір елементів однакового типу, що мають спільне ім’я. У мові VBA будь-який масив має власне ім’я і складається із декількох елементів. Кожен елемент масиву має ім’я та номер (індекс), який записано у круглих дужках. Наприклад, А(1), Numer (5). Такий масив називається одновимірним. У мові VBA нумерація елементів у масиві починається з нуля, але за допомогою оператора Option Base 1 можна змінити початковий індекс. Крім одновимірних масивів у мові VBA можна створювати багатовимірні масиви, що мають два і більше індексів. У масиві з двома індексами дані представлені у вигляді прямокутної таблиці, що має рядки та стовпці. Якщо кількість рядків дорівнює кількості стовпців, то масив називається матрицею. Перед використанням змінних у програмному коді їх попередньо треба оголосити. Оголошення змінних здійснюється за допомогою службових слів, що мають такий формат: Dim ім’я_змінної [As тип_даних]- для оголошення локальної змінної – видимої тільки у цій процедурі, при виході з процедури її значення буде втрачено. Private ім’я_змінної [As тип_даних]- для оголошення локальної змінної - видимої у всіх процедурах одного модуля, до якого належать ці процедури, але опис такої змінної потрібно зробити у розділі Declarations. Static ім’я_змінної [As тип_даних]- для оголошення локальної змінної – видимої тільки у цій процедурі, але після виходу з цієї процедури її значення не втратиться. Public ім’я_змінної [As тип_даних]- для оголошення глобальної змінної – видимої у всіх процедурах усіх модулів. Вона може бути оголошена у стандартному модулі. Наприклад. Option Private Module Dim a As Integer Private b As Long Public с As Single Public Sub NewSubO Dim x As Single , End Sub Змінні а та b доступні у межах всього модуля. Змінна с буде доступна для всіх модулів, але тільки для даного проекту (т.я. вказано оператор Option Private Module). Змінна х буде доступна тільки всередині процедури NewSub, т.я. вона оголошена безпосередньо в ній. Мова VBA підтримує два типи масивів — статичні та динамічні. Для статичних масивів розмірність, вказана при їх оголошенні, залишається фіксованою впродовж виконання програми. Для оголошення масиву фіксованої розмірності вказують у круглих дужках після його імені конкретні розміри. Наприклад: 'Одновимірний масив з 51 элемента Dim Ml(50) As Integer 'Двовимірний масив з 11 рядків по 21 елементу Dim M2(10,20) As Integer При оголошенні динамічного масиву його розмірність після імені не вказується, наприклад: Dim Ml () As Single Перед використанням динамічного масиву у процедуру вписують оператор ReDim, який визначає фактичну розмірність масиву, наприклад: ReDim Ml (5) 'одновимірний масив з 6 елементів ReDim M1(l ТО 6, 1 То 10) 'двовимірний масив з 60 елементів При повторному визначені масиву його вміст знищується. Для збереження вже існуючих даних вказують ключове слово Preserve. Dim M() As Single ReDim M(l To 10, 1 To 20) ReDim Preserve M(l To 10, 1 To 50) Для оголошення констант використовують ключове слово Const, наприклад: Const КilkistVydNarahuvan =16 Const VydNarahuvan= "Нарахування премії" Після оголошення змінної, їй можна задати деяке значення за допомогою оператора присвоєння. Оператор присвоєння надає змінній значення, обчислене за деякою формулою і має вид: <змінна> = <вираз> Вираз містить числа, константи, прості змінні, елементи масиву, круглі дужки та стандартні математичні функції., об’єднані знаками арифметичних операцій. Стандартні функції для числових та рядкових величин подано у таблицях 1 і 2. Таблиця 1 Стандартні математичні функції
Таблиця 2 Функції для роботи з рядковими величинами
Наприклад: k = 4 inn = 457 - k ss = “Сообщение об ошибке:” ainn (45) = (4567*k – inn)*x1(3)*cos(x3(5) ) x2(0) = 2.71 pr_equip.cod = 12 – x2(0) pr_equip.price = 2*sin(2*j) – pr_tax Якщо оператор не поміщається на один рядок, то він переноситься на наступний рядок за допомогою символу підкреслення «_», відділеного від тексту оператора пропуском. Наприклад: d = log(a) * (1 + sqr(b) / k) _ *tan(c)^3 Після кожного оператора в тому ж рядку може бути коментар (пояснення). Для запису коментаря використовують апостроф або службове слово Rem: <оператор> ‘<коментар> <оператор> Rem <коментар> Приклад процедури з лінійним обчислювальним процесом, записаної мовою VBA: Private Sub Prog1 Dim a As Byte, b As Single , c As Single Dim d As Single a = 5 b = log(a) c = sin(a*b) d = c* (1 + b / 100) ^a Print d End Sub З повагою ІЦ “KURSOVIKS”! |