
- •6.051501 – “ Видавничо-поліграфічна справа ”
- •Міністерство освіти і науки україни харківський національний університет радіоелектроніки
- •6.051501 – “ Видавничо-поліграфічна справа ”
- •Харків 2009
- •1 Ознайомлення з середовищем vba. Вивчення вбудованих функцій
- •1.1 Мета роботи
- •1.2 Завдання для самостійної підготовки
- •1.3 Методичні вказівки до лабораторної роботи
- •1.4 Завдання на лабораторну роботу
- •1.5 Порядок виконання роботи
- •1.7 Контрольні запитання та завдання
- •2 Робота з меню та відпрацювання вбудованих математичних функцій, з використанням користувальницьКиХ макросів
- •2.1 Мета роботи
- •2.2 Завдання для самостійної підготовки
- •Методичні вказівки до лабораторної роботи
- •2.4 Завдання на лабораторну роботу
- •2.5 Порядок виконання роботи
- •2.7 Контрольні запитання та завдання
- •3 Розробка макрокоманд у ms office 2007
- •3.1 Мета роботи
- •3.2 Завдання для самостійної підготовки
- •Методичні вказівки до лабораторної роботи
- •3.4 Завдання на лабораторну роботу
- •Порядок виконання роботи
- •3.7 Контрольні запитання та завдання
- •4 РоЗРоБка макрокоманд в ms excel 2007
- •4.1 Мета роботи
- •4.2 Завдання для самостійної підготовки
- •Методичні вказівки до лабораторної роботи
- •4.4 Завдання на лабораторну роботу
- •Продовження табл. 4.1
- •4.5 Порядок виконання роботи
- •4.7 Контрольні запитання та завдання
- •Перелік посилань
- •Додаток а Форма титульного аркуша звіту
- •Харків 2009
- •Відруковано в учбово-виробничому
- •61166 Харкiв, просп. Ленiна, 14.
-
Порядок виконання роботи
-
Відкрити MS Word 2007.
-
Вивчити процедури призначення макросам клавіш і кнопок.
-
Вивчити порядок створення макросів у режимі запису.
-
Вивчити порядок переміщення макросів між шаблонами.
-
Завантажити редактор VBA.
-
Одержати у викладача номер індивідуального завдання на лабораторну роботу та розробити відповідний до нього макрос. Варіанти індивідуальних завдань наведено в табл. 3.1.
-
Оформити звіт.
-
3.6 Зміст звіту
Звіт до лабораторної роботи має містити:
-
тему й мету роботи;
-
послідовність операцій, які було виконано у процесі виконання роботи, основні екранні форми та аналіз допущених помилок;
-
тему індивідуального завдання;
-
екранні форми, що демонструють роботу макросу й текст макросу, що відповідає поставленому завданню;
-
висновки з лабораторної роботи.
-
3.7 Контрольні запитання та завдання
-
Що таке макрос? Для чого він використовується?
-
Які існують засоби для створення макросів?
-
У яких ситуаціях зручно використовувати макроси?
-
Як створюються макроси в режимі запису?
-
Які команди можуть бути записані в макрос?
-
Як здійснюється запуск макросів?
-
Як призначити макрос клавішам і кнопці на панелі?
-
Для чого використовуються макроси, що запускаються автоматично?
-
У яких випадках при створенні макросу необхідний програмний код?
-
Як запускається програма запису макросів?
11. Які макроси відображаються в списку діалогового вікна Макрос після виконання роботи?
12. Назвіть три підвікна VВ-редактора. Опишіть призначення кожного з них.
13. Що таке коментарі? Як їх вставити в текст макросу?
14. Чому текст записаних макросів має відступи? Навіщо робити відступи в текстах, в програмах?
4 РоЗРоБка макрокоманд в ms excel 2007
4.1 Мета роботи
Ознайомлення з основними принципами побудови макрокоманд в MS Exel 2007, створення макросів у режимі запису, створення й подальше використання форм користувача. Набуття практичних навичок розробки макрокоманд мовою VВА.
4.2 Завдання для самостійної підготовки
Під час підготовки до виконання лабораторної роботи необхідно:
-
вивчити лекційний матеріал зі створення макросів і методичні вказівки до лабораторної роботи;
-
відповісти на контрольні запитання й виконати контрольні завдання;
-
підготувати звіт з виконання роботи.
Для одержання додаткової інформації рекомендовано використовувати літературу [1-5,9-10].
-
Методичні вказівки до лабораторної роботи
Об'єктна модель MS Exel 2007
Секрет використання VВА полягає у правильному розумінні об'єктної моделі в кожному окремому додатку. Слід зазначити, що VВА лише управляє об'єктами, а в кожного програмного продукту (Exсel, Word, Access тощо) своя об'єктна модель. Додатком можна управляти програмно тільки за допомогою об'єктів, які подані в цьому додатку. Основні синтаксичні структури мови VВА були розглянуті вище.
В об'єктній моделі Exсel представлено кілька потужних об'єктів аналізу даних, наприклад, робочі аркуші, діаграми, зведені таблиці, сценарії, а також численні математичні, фінансові, інженерні й загальні функції. За допомогою VВА можна працювати з цими об'єктами й розробляти автоматизовані процедури.
В об'єктній моделі Exсel використовуються колекції. Колекція - це група об'єктів одного класу (колекція теж є об'єктом). Кожен об'єкт має властивості та до нього можна застосовувати методи. Властивість - це фрагмент інформації, що має відношення до даного об'єкта. На відміну від властивостей, методи - це дії, виконувані об'єктом. У результаті виконання тих або інших методів відбуваються деякі події (наприклад, відкриття й закриття вікон, виведення діалогових вікон). Розглянемо основні об'єкти МS Exсel 2007.
Аpplication відповідає самому додатку Exсel. Цей об'єкт знаходиться на вершині ієрархії об'єктів Exсel. Applicationп є у всіх додатках Оffice, і основні його властивості та методи скрізь однакові, що дозволяє писати макроси, які виконуються в декількох додатках Office.
Колекція Workbooks складається з об'єктів Workbook, які мають всі відкриті робочі книги MS Exсel. Щоб закрити робочу книгу, потрібно використовувати метод Сlose
Workbooks.Close
Нижче наведено приклад створення книги й додавання її в колекцію:
Workbooks.Add
Щоб відкрити книгу, використовуйте метод Ореп, зазначивши ім'я файла, що відкривається (у прикладі книга відкривається тільки для читання):
Workbooks.Open FileName = “Книга1.xls”, ReadOnly:= True
Властивість ActiveWorkbook об'єкта Applicationп повертає активну на даний момент книгу. Властивість ThisWorkbook повертає книгу, у контексті якої виконується даний код на Visual Basic. Властивість Aиthor повертає рядок, що містить ім'я автора книги. Метод Save зберігає у файл робочу книгу. Властивість Worksheets повертає колекцію робочих аркушів для даної книги.
Колекція Worksheets складається з об'єктів Worksheet, які мають всі аркуші зазначеної або активної книги. Метод Add створює новий аркуш і додає його в колекцію.
Activesheet являє собою активний у цей момент аркуш книги. Щоб зробити який-небудь аркуш активним, потрібно використовувати метод Activate. У даному прикладі активізується орієнтація та встановлюється в горизонтальну, а потім виводиться на друк:
Worksheets ("Аркуш1").Activable
ActiveSheet.PageSetup.Orientation = xLandscape
ActiveSheet.PrintOut
Властивості Previousх та Next повертають попередній і наступний аркуші відповідно.
Властивість Cells повертає об'єкт Range, який являє собою всі осередки даного аркуша. Властивість Rows повертає об'єкт Range, який являє собою рядки в даному аркуші. Звернутися до рядка можна по індексу. Наприклад, щоб вилучити рядок 3, потрібно виконати такий код:
Worksheets("Sheet1").Rows(3).Delete
Аналогічно, стовпчики мають властивість Columns. Метод Columns обчислює даний аркуш. Метод Paste вставляє вміст буфера обміну на робочий аркуш. Метод PasteSpecial виконує спеціальну вставку; його аргументи відповідають командам меню Специальная вставка з контекстного меню. Метод Сору копіює аркуш в інше місце книги.
Колекція Sheets являє собою колекцію всіх робочих аркушів даної книги та аркушів з діаграмами.
Range являє собою осередок, рядок, стовпчик або діапазон осередків, який складається з одного або декількох суміжних блоків осередків, або тривимірний діапазон. Об'єкт Range повертає такі методи й властивості: Range, Сеlls, Object, Union. За допомогою аргументу властивості Range можна вказувати діапазон осередків. Даний приклад привласнює осередку А5 значення, що зберігається в осередку А1:
Worksheets(“Sheet1”).Range("А5").Value=Worksheets(“Sheet1”).Range ("А1").Value
Якщо перед Range об'єкт не вказується, то ця властивість повертає необхідний діапазон на активному аркуші. Заповнення діапазону А1.Н8 активного аркуша випадковими числами:
Worksheets ("Sheet1").Activate
Range ("А1:Н8").Formula= “=Rand()”
Як видно з наведених вище прикладів, властивість Formula дає доступ до формули осередку, а Value - до її значення.
Діапазони можуть мати власні імена. У наступному прикладі вміст діапазону Сriteria очищується:
Worksheets (1).Range("Criteria").ClearContents
Якщо як аргумент використовується рядок, у ньому для посилання на діапазон можна використовувати тільки значення типу А1, а В1:С1 використовувати не можна. Щоб одержати доступ до окремого осередку, використовуйте запис Cell(Рядок, Стовпчик). Наприклад:
Worksheets(1).Cells(1,1).Value = 24
ActiveSheet.Cells(2,1).Formula = “=Sum(B1:B5)”
Хоча до осередку можна звертатися за допомогою властивості Range, зручніше використовувати властивість Сеlls, оскільки в його аргументах можуть стояти змінні. Також властивість Cells можна використовувати в комбінації з властивістю Range:
Worksheets (1).Range ("C5:С10").Сells(1,1).Formula= "=Rand ()"
Щоб вказати початковий та кінцевий осередки діапазону, використовуйте запис Range(cell1, cell2). Встановимо стиль ліній границь для діапазону:
With Worksheets(1)
Range(.Се11s(1, 1), _ .Се11s(10, 10)).Borders.LineStyle = xlThick
End With
Щоб одержати діапазон відносно іншого діапазону, використовуйте властивість Offset(рядок, стовпчик), де аргументи - це зсув відносно іншого діапазону. У наступному прикладі виділяється осередок на 3 рядки нижче та на один стовпчик праворуч верхнього лівого кута поточного виділення. Не можна виділити осередок, який не знаходиться на активному аркуші, тому спочатку потрібно зробити аркуш активним:
Worksheets (“Sheet1”).Activate Selection.Offset (3, 1) .Range(“А1").Select
Метод Unioп(діапазон1, діапазон і, ...) повертає діапазон з декількома областями, тобто діапазон, що складається з несуміжних областей. У прикладі створюється об'єднання областей А1.В2 і СЗ:В4 і їхнє виділення:
Dim r1 As Range, r2 As Range, MyMultiAreaRange As Range
Worksheets(“Sheet1”).Activate
Set r1 = Range (“A1:B2”)
Set r1 = Range (“C3:D4”)
Set MyMultiAreaRange = Union (r1, r2)
MyMultiAreaRange Select
Під час роботи з декількома областями зручно використовувати власти вість Areas, яка повертає колекцію, що складається з об'єктів Range, які являють собою окремі області даного діапазону. Наприклад:
Sub NoMultiAreaSelection()
NumberOfSelectedAreas = 1 Тhen
MsgBox “You cannot carry out this command”
End If
End Sub
Якщо у формулі для осередку використовуються позначення типу R1C1,потрібно вказувати властивість FormulaC1. Навіть якщо встановлено російську версію Excel, потрібно вказувати англійський варіант функцій при використанні формул в VВА. Наприклад:
Worksheets (1).Cells (5,6).Formulaa1C1=”=IF( (RC[-7] – RC [-2])>0, (RC [-7] –RC [-2]) * RC [-8], 0)”
Посилання на інші осередки відносно даного вказуються у вигляді R[зсув]С[зсув]. Якщо зсув дорівнює 0, він не вказується.
Колекція Styles складається з об'єктів Style, які являють собою опис стилю: шрифт, формат внутрішньої області, формат границь.
Колекція Borders складається з об'єктів Border, які являють собою границі осередків (діапазону осередків). За допомогою властивостей цього об'єкта можна встановлювати стиль границь для діапазону. У наступному прикладі в осередку А1 встановлюється стиль границі - подвійна лінія:
Worksheets (1).Range (“A1”).Borders.LineStyle=xlDouble
Щоб звернутися до однієї границі, потрібно використовувати індекс. У наступному прикладі змінюється колір нижньої границі:
Worksheets (“Sheet1”).Range (“A1:G1”).
Borders (xlEdgeBottom).Color = RGB (255,0,0)
Метод Sort дозволяє сортувати зазначений діапазон. У наступному прикладі в діапазоні А1:С20 сортуються рядки. Як ключі взяті осередки А1 і В1:
Sob SortRange1 ()
Worksheets (“Sheet1”).Range (“A1:С20”).Sort
Key1:=Worksheets(“Sheet1”).Range (“A1:”)
Key2:=Worksheets(“Sheet1”).Range (“B1:”)
End Sub
Об'єкт Font містить атрибути шрифту для осередку (діапазону). Він має такі самі властивості, як аналогічний об'єкт у Word.
Об'єкт Interior являє внутрішню область діапазону. З його допомогою можна змінювати колір заливання (ColorIndex).
Об'єкт Chart являє собою діаграму в робочій книзі (може бути або вбудованою діаграмою, або перебувати на окремому аркуші). Chart Object являє діаграму, вбудовану в робочий аркуш. Він є контейнером для відповідного об'єкта Chart.
Об'єкт Protection являє собою властивості захисту робочого аркуша. За допомогою властивостей цього об'єкта можна дозволити або заборонити редагування діапазонів, форматування, сортування, вставку рядків, стовпчиків тощо.
Так само, як і Word, Exсel має об'єкти SmartTags, PageSetup, Dialogs, Windows, Debug і багато інших. Об'єкт Speech містить методи й властивості для озвучування вмісту осередків.
Створення власних функцій в Exсel
-
Викликати Exсel. Перебуваючи в чистій (новій) книзі, викликати редактор VВА (Сервис>Макрос>Редактор VВА або клавіші <Alt+F11>).
-
У меню редактора VВА вибрати Вставка>Модуль.
-
Помістити в модуль текст функції необхідних розрахунків.
-
Відкомпілювати модуль (меню Отладка>Компилировать модуль).
-
Закрити редактор VВА і повернутися в Ехcel.
-
Зберегти книгу як файл надбудови.
-
Відкрити книгу Ехсеl.
-
Підключити створену надбудову (меню: Сервис>Надстройки>Обзор). Розрахувати прибутковий податок за допомогою створеної функції, переконатися в її працездатності.
Тіло функції – це послідовність операторів, які виконують необхідні обчислення. У результаті обчислень функції має бути привласнене обчислене значення.
У процесі розрахунку прибуткового податку необхідно використовувати вбудовану функцію Fix(аргумент), яка повертає цілу частину аргументу.
Використання форм користувача
Ехсеl дозволяє відносно просто створювати власні діалогові вікна в додатках, які розробляються користувачем. Насправді з їхньою допомогою можна повторити зовнішній вигляд і поведінку практично всіх стандартних діалогових вікон Ехсеl.
Діалогові вікна користувача створюються на основі технології форм користувача UserForm, до яких можна одержати доступ з редактора VВА. Нижче наведена стандартна послідовність дій, якої слід дотримуватися під час створення діалогового вікна користувача.
-
Вставте нову форму UserForm у проект VВА робочої книги (кнопка Input>UserForm).
-
Створіть процедуру, яка відображатиме форму UserForm (рядок коду UserForm.Show). Ця процедура розташовується в модулі коду VВА (а не в модулі коду форми UserForm).
Sub ShowForm
UserForm1.Show
End Sub
-
Додайте елементи керування у форму UserForm (вікно Toolbox).
-
Відладка властивостей доданих елементів керування. Клацніть на кнопці у вікні Toolbox, що відповідає елементу керування, який додається. Після цього клацніть усередині діалогового вікна для створення елемента керування (використовується розмір елемента за замовчуванням).
-
Створіть процедури-обробники подій для елементів керування. Ці процедури додаються в модуль коду UserForm і виконуються при виникненні різних подій (наприклад, при клацанні на кнопці).
Зміна властивостей елементів керування
Кожен елемент керування характеризується набором параметрів, які визначають зовнішній вигляд і поведінку елемента керування. Властивості елемента керування можна змінювати у таких випадках:
-
У момент проектування під час розробки діалогового вікна користувача. Для цього використовується вікно Properties.
-
У процесі виконання, коли діалогове вікно користувача відображається на екрані за допомогою написання відповідного програмного коду. Слід зазначити, що в редакторі VВЕ після написання ім'я змінної та встановлення після нього крапки без пробілу виведеться список властивостей даного елемента і властивих йому методів.
Використання вікна Properties
У редакторі VВА вікно Properties дозволяє змінювати властивості виділеного елемента керування (це може бути звичайний елемент керування або сама форма).
У вікні Properties розташовані дві вкладки. Вкладка Alphabetic являє собою властивості виділеного елемента керування за абеткою. Вкладка Categorized відображає властивості, згруповані в логічні категорії. Обидві вкладки містять однакові властивості, але в різному порядку.
Для того щоб змінити властивість, необхідно клацнути на ній і ввести нове значення. Якщо виділити два або більше елементи керування, то вікно Properties відображатиме тільки ті властивості, які є загальними для виділених об'єктів.
Об'єкт UserForm характеризується рядом властивостей, значення яких можна змінювати. Ці властивості використовуються як значення, прийняті за замовчуванням для елементів керування, які додаються в діалогове вікно користувача. Наприклад, якщо змінити властивість Font об'єкту UserForm, то всі елементи керування, які вставляються в діалогове вікно користувача, використовуватимуть зазначений шрифт.
Загальні властивості
Кожен елемент керування має як власний набір унікальних властивостей, так і ряд загальних властивостей, притаманних іншим елементам керування. Наприклад, всі елементи керування мають властивість Name і властивості, що визначають його розмір і розташування на формі (Height, Width, Left, Right). Наприклад, перший елемент керування OptionButton, доданий у користувальницьке діалогове вікно, за замовчуванням отримає ім'я OptionButton1. Код посилання на цей об'єкт матиме вигляд:
OptionButton 1.Value = True
Якщо елементу керування OptionButton привласнити описове ім'я (наприклад, оbLandscape), то можна використовувати оператор
obLandscape.Value = True
Тестування діалогового вікна користувача
Існує три способи, які дозволяють перевірити діалогове вікно без виклику його з процедури VВА:
-
команда Run>RunSub/UserForm;
-
клавіша <F5>;
-
кнопки RunSub/UserForm на панелі інструментів Standart.
Ці методи дозволяють запустити подію ініціалізації діалогового вікна. Як тільки діалогове вікно відобразиться в тестовому режимі, можна розпочати перевірку порядку активізації об'єктів і підтримки комбінацій клавіш.
Відображення діалогового вікна користувача
Для того щоб відобразити діалогове вікно користувача за допомогою VВА, необхідно створити процедуру, яка викликає метод Show об'єкта UserForm. Наприклад:
Sub Show.Dialog ()
UserForm1.Show
End Sub
Ця процедура повинна розташовуватися в стандартному модулі VВА, а не в модулі форми UserForm. Крім того, VВА підтримує оператор Load, який завантажує діалогове вікно користувача. Наприклад:
Load UserForm1
Закриття діалогового вікна користувача
Для того, щоб закрити форму UserForm1, скористайтеся командою Unload. Наприклад:
Unload UserForm1
Також можна застосувати оператор Unload Me. Коли форма UserForm вивантажується з пам'яті, елементи керування, які містилися на ній, повертаються у початковий стан. Якщо значення, введені користувачем, застосовуватимуться пізніше, то необхідно зберегти їх у змінній з областю дії Public, що визначена у стандартному модулі VВА. Крім того, значення завжди можна зберегти в осередку аркуша.
Об'єкт UserForm може використовувати метод Hide. При виклику цього методу діалогове вікно зникає, але залишається у пам'яті, тому в коді можна одержати доступ до різних властивостей елементів керування. Нижче наведемо приклад оператора, що приховує діалогове вікно:
UserForm1.Hide
Приклад створення діалогового вікна користувача
Розглянемо приклад виведення діалогового вікна, призначеного для одержання від користувача ім'я і статі та занесення цих даних до таблиці додатку Ехсеl 2007. У діалоговому вікні необхідно розмістити елемент керування TextBox, який буде використано для введення ім'я і три елементи керування OptionBottonдля вибору статі (чоловік, жінка й інше). Інформація, яка буде внесена в діалогове вікно, має заноситися в порожній рядок робочого аркуша після натискання на кнопку ОК.
Розглянемо порядок створення діалогового вікна. Щоб одержати найкращий результат, створіть нову робочу книгу з одним робочим аркушем. Після цього виконайте такі інструкції.
1. Натисніть комбінацію клавіш <Alt+F11>для запуску VВА.
2. У вікні Project вкажіть проект робочої книги, а потім виберіть Insert>UserForm, щоб додати порожнє діалогове вікно.
-
Властивість Caption об'єкта UserForm матиме значення за замовчуванням – UserForm1, Скористайтеся вікном Properties для того, щоб змінити значення властивості Caption на Введіть своє ім'я і стать (якщо вікно Properties не відображається на екрані, натисніть клавішу <F4>).
-
Додайте на форму елементи керування та змініть їхні властивості у вікні Propertise.
Перевірка правильності введених даних
Наведеному в цьому розділі прикладу слід приділити особливу увагу. У даному прикладі не усунута невелика проблема – відсутня перевірка введених у текстовому полі даних (ви не знаєте, чи ввів користувач своє ім'я). Наступний код додайте у процедуру OKButton_Click перед оператором вставки тексту на робочий аркуш. Він перевіряє, чи ввів користувач своє ім'я (наявність будь-якого тексту) у поле TextBox. Якщо текстове поле TextBox залишилося порожнім, то виводиться відповідне повідомлення, і текстове поле знову стає активним. Таким чином, користувач зможе приступити до введення свого імені. Оператор ExitSub завершує виконання процедури без виконання додаткових дій.
If TextName.Text = “” Then MsgBox “Уведіть ім’я.”
TextName.SetFocus
Exit Sub
End If
Після внесення відповідних виправлень діалогове вікно працюватиме бездоганно. У реальному житті може знадобитися зібрати багато додаткової інформації, а не тільки відомостей про ім'я і стать користувача. Але щоразу необхідно застосовувати викладені вище принципи. Необхідно тільки додати в діалогове вікно більше елементів керування.