Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка к лаб. работам информ.doc
Скачиваний:
3
Добавлен:
28.10.2018
Размер:
1.22 Mб
Скачать
    1. Порядок виконання роботи

  1. Відкрити MS Word 2007.

  2. Вивчити процедури призначення макросам клавіш і кнопок.

  3. Вивчити порядок створення макросів у режимі запису.

  4. Вивчити порядок переміщення макросів між шаблонами.

  5. Завантажити редактор VBA.

  6. Одержати у викладача номер індивідуального завдання на лаборатор­ну роботу та розробити відповідний до нього макрос. Варіанти індивідуальних завдань наведено в табл. 3.1.

  7. Оформити звіт.

    1. 3.6 Зміст звіту

Звіт до лабораторної роботи має містити:

  • тему й мету роботи;

  • послідовність операцій, які було виконано у процесі виконання роботи, основні екранні форми та аналіз допущених помилок;

  • тему індивідуального завдання;

  • екранні форми, що демонструють роботу макросу й текст макросу, що відповідає поставленому завданню;

  • висновки з лабораторної роботи.

    1. 3.7 Контрольні запитання та завдання

  1. Що таке макрос? Для чого він використовується?

  2. Які існують засоби для створення макросів?

  3. У яких ситуаціях зручно використовувати макроси?

  4. Як створюються макроси в режимі запису?

  5. Які команди можуть бути записані в макрос?

  6. Як здійснюється запуск макросів?

  1. Як призначити макрос клавішам і кнопці на панелі?

  2. Для чого використовуються макроси, що запускаються автоматично?

  3. У яких випадках при створенні макросу необхідний програмний код?

  4. Як запускається програма запису макросів?

11. Які макроси відображаються в списку діалогового вікна Макрос після виконання роботи?

12. Назвіть три підвікна VВ-редактора. Опишіть призначення кожного з них.

13. Що таке коментарі? Як їх вставити в текст макросу?

14. Чому текст записаних макросів має відступи? Навіщо робити відступи в текстах, в програмах?

4 РоЗРоБка макрокоманд в ms excel 2007

4.1 Мета роботи

Ознайомлення з основними принципами побудови макрокоманд в MS Exel 2007, створення макросів у режимі запису, створення й подальше вико­ристання форм користувача. Набуття практичних навичок розробки макроко­манд мовою VВА.

4.2 Завдання для самостійної підготовки

Під час підготовки до виконання лабораторної роботи необхідно:

  • вивчити лекційний матеріал зі створення макросів і ме­тодичні вказівки до лабораторної роботи;

  • відповісти на контрольні запитання й виконати контрольні завдання;

  • підготувати звіт з виконання роботи.

Для одержання додаткової інформації рекомендовано використовувати літературу [1-5,9-10].

    1. Методичні вказівки до лабораторної роботи

Об'єктна модель 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

  1. Викликати Exсel. Перебуваючи в чистій (новій) книзі, викликати редактор VВА (Сервис>Макрос>Редактор VВА або клавіші <Alt+F11>).

  2. У меню редактора VВА вибрати Вставка>Модуль.

  3. Помістити в модуль текст функції необхідних розрахунків.

  1. Відкомпілювати модуль (меню Отладка>Компилировать модуль).

  2. Закрити редактор VВА і повернутися в Ехcel.

  3. Зберегти книгу як файл надбудови.

  4. Відкрити книгу Ехсеl.

  5. Підключити створену надбудову (меню: Сервис>Надстройки>Обзор). Розрахувати прибутковий податок за допомогою створеної функції, перекона­тися в її працездатності.

Тіло функції – це послідовність операторів, які виконують необхідні обчислення. У результаті обчислень функції має бути привласнене обчислене значення.

У процесі розрахунку прибуткового податку необхідно використовувати вбудовану функцію Fix(аргумент), яка повертає цілу частину аргументу.

Використання форм користувача

Ехсеl дозволяє відносно просто створювати власні діалогові вікна в додат­ках, які розробляються користувачем. Насправді з їхньою допомогою можна повторити зовнішній вигляд і поведінку практично всіх стандартних діалогових вікон Ехсеl.

Діалогові вікна користувача створюються на основі технології форм користувача UserForm, до яких можна одержати доступ з редактора VВА. Нижче наведена стандартна послідовність дій, якої слід дотримуватися під час створення діалогового вікна користувача.

  1. Вставте нову форму UserForm у проект VВА робочої книги (кноп­ка Input>UserForm).

  2. Створіть процедуру, яка відображатиме форму UserForm (рядок коду UserForm.Show). Ця процедура розташовується в модулі коду VВА (а не в модулі коду форми UserForm).

Sub ShowForm

UserForm1.Show

End Sub

  1. Додайте елементи керування у форму UserForm (вікно Toolbox).

  2. Відладка властивостей доданих елементів керування. Клацніть на кнопці у вікні Toolbox, що відповідає елементу керування, який додається. Після цього клацніть усередині діалогового вікна для створення елемента керування (використовується розмір елемента за замовчуванням).

  3. Створіть процедури-обробники подій для елементів керування. Ці про­цедури додаються в модуль коду UserForm і виконуються при виникненні різних подій (наприклад, при клацанні на кнопці).

Зміна властивостей елементів керування

Кожен елемент керування характеризується набором параметрів, які ви­значають зовнішній вигляд і поведінку елемента керування. Властивості елемента керування можна змінювати у таких випадках:

  1. У момент проектування під час розробки діалогового вікна користува­ча. Для цього використовується вікно Properties.

  2. У процесі виконання, коли діалогове вікно користувача відображається на екрані за допомогою написання відповідного програмного коду. Слід зазна­чити, що в редакторі 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, щоб додати порожнє діалогове вікно.

  1. Властивість Caption об'єкта UserForm матиме значення за замовчуван­ням – UserForm1, Скористайтеся вікном Properties для того, щоб змінити зна­чення властивості Caption на Введіть своє ім'я і стать (якщо вікно Properties не відображається на екрані, натисніть клавішу <F4>).

  2. Додайте на форму елементи керування та змініть їхні властивості у вікні Propertise.

Перевірка правильності введених даних

Наведеному в цьому розділі прикладу слід приділити особливу увагу. У даному прикладі не усунута невелика проблема – відсутня перевірка введе­них у текстовому полі даних (ви не знаєте, чи ввів користувач своє ім'я). Наступ­ний код додайте у процедуру OKButton_Click перед оператором вставки тексту на робочий аркуш. Він перевіряє, чи ввів користувач своє ім'я (наявність будь-якого тексту) у поле TextBox. Якщо текстове поле TextBox залишилося порож­нім, то виводиться відповідне повідомлення, і текстове поле знову стає актив­ним. Таким чином, користувач зможе приступити до введення свого імені. Опе­ратор ExitSub завершує виконання процедури без виконання додаткових дій.

If TextName.Text = “” Then MsgBox “Уведіть ім’я.”

TextName.SetFocus

Exit Sub

End If

Після внесення відповідних виправлень діалогове вікно працюватиме бездоганно. У реальному житті може знадобитися зібрати багато додаткової ін­формації, а не тільки відомостей про ім'я і стать користувача. Але щоразу необ­хідно застосовувати викладені вище принципи. Необхідно тільки додати в діа­логове вікно більше елементів керування.