
- •1. Об’єктна модель Excel
- •2. Інтерфейс vba
- •2.1. Вікно проекту
- •2.2. Вікно властивостей елемента проекту
- •2.3. Вікно для редагування кода процедури
- •2.4. Вікно редагування форм (UserForm).
- •3. Програмування в Excel
- •3.1. Синтаксис і дані мови vba
- •3.4. Операції
- •3.2. Константи
- •3.5. Вмонтовані діалогові вікна vba
1. Об’єктна модель Excel
Меню, панель інструментів, робоча книга, робочий аркуш, комірка, діапазон комірок, діаграма, шрифт тощо – все це об’єкти. Сукупність об’єктів Excel відкритих для використання іншими застосуваннями Microsoft Office називається об’єктною моделлю Excel.
Керування об’єктами здійснюється за допомогою властивостей і методів.
Властивість – це сукупність характеристик і атрибутів, що описують об’єкт. Зміна значень властивостей впливає на поведінку і зовнішній вид об’єкта. За допомогою властивостей, наприклад, можна задати колір, значення, шрифт, формат комірок таблиці тощо. Команда для надання об’єкту певної властивості має наступний синтаксис:
Об’єкт. Властивість = значення
де, Об’єкт – ім’я об’єкта, Властивість – відповідне ім’я властивості, якій призначається значення. Ім’я об’єкта відокремлюється від імені властивості крапкою. Наприклад, для того щоб надати властивість Formula об’єкту Range(“D4”) (іншими словами, щоб помістити в комірку D4 формулу, наприклад, =А2*С8), використовують наступну інструкцію для об’єкта Range: Range(“D4”).Formula =”=А2*С8”.
Для того щоб отримати значення властивості об’єкта, використовують такий запис: Ім’яЗмінної= Об’єкт.Властивість. Наприклад, для надання змінній Х властивості Value об’єкта Range(“A7”) (тобто, для фіксації у змінній значення комірки Range(“A7”)) використовують таку інструкцію: Х = Range(“A7”). Value
Метод – це дія, яку повинен виконати об’єкт (відкрити, зберегти, додати, перемістити тощо). Наприклад, метод Clear до об’єкта Range(“D4”) вилучає вміст комірки: Range("D4").Clear.
У об’єктній моделі Excel досить часто використовуються поняття колекції – група подібних об’єктів. Основою властивістю колекції є можливість додавати нові елементи до колекції. Так, до об’єкта Excel можна додавати нові книги, до нових книг можна додавати нові аркуші тощо. Тому, книга1 (Workbook) це елемент колекції книг (Workbooks); аркуш1 (Sheet) – це елемент колекції сторінок (Sheets). У той же час комірки робочого аркуша (Range) не можуть бути колекцією, тому що кількість комірок в аркуші визначено фірмою Microsoft і їх значення не може бути змінена користувачем.
1.1. Об’єкт Application
На вершині об’єктної моделі знаходиться об’єкт Application (сама програма Excel), всі інші об’єкти моделі є дочірніми по відношенню до Application. Концепція підпорядкування дає змогу утворювати посилання на об’єкти в кодах VBA. Синтаксис посилання на об’єкти такий: об’єкти вказуються в порядку підпорядкування; ім’я одного об’єкта від попереднього відокремлюється крапкою; аргумент об’єкта береться в лапки і від об’єкта відокремлюється круглими дужками. Наприклад, щоб звернутись до комірки А5 на робочому аркуші Лист1 робочої книги Книга1, треба використати таке повне посилання: Application. Workbooks (“Книга1”). Worksheets (“Лист1”).Range(“A5”). Повне посилання на об’єкт вимагається не завжди. У більшості випадків об’єкт Application можна не згадувати, тоді посилання на комірку А5 може бути такого змісту: Workbooks ("Книга1"). Worksheets ("Лист1"). Range("A5"), а якщо аркуш Лист1 є поточним, тоді можна використати “урізане” посилання на комірку – Range("A5"). Практичний досвід програмування підкаже вам, у яких випадках можна використовувати “урізаний” опис об’єктів.
Об’єкт Application має велику кількість властивостей і методів. Наведемо декілька найчастіше вживаних властивостей (табл. 1) і методів (табл. 2) об’єкту Application.
Таблиця 1
Властивості об’єкту Application
Властивості |
Опис і синтаксис запису властивості |
Caption |
Дає змогу отримати або задати текст, який відображається у рядку заголовка головного меню Excel. Приклади: А= Application. Caption – змінній А пересилається назва заголовка головного меню; Application. Caption = “Проба” – вивід вказаного тексту в рядок заголовка головного вікна Excel; Application. Caption = Empty – відновлення стандартної назви вікна “Microsoft Excel” |
DisplayFormulaBar |
Вивід рядка формул у вікно Excel. Приклади: Application. DisplayFormulaBar = True – вивід рядка формул у вікно Excel; Application. DisplayFormulaBar = False – ліквідація рядка формул у вікні Excel. |
DisplayStatusBar |
Вивід/ліквідація рядка стану у вікні Excel. Приклади: Application. DisplayStatusBar = True – вивід рядка стану; Application. DisplayStatusBar = False – ліквідація рядка стану. |
StatusBar |
Вивід/ліквідація рядка стану Excel і введення тексту дії в рядок стану. Приклади: Application. DisplayStatusBar = True – вивід рядка стану у вікно; Application. StatusBar = “Вводимо дані..” – вивід дії в рядок стану; Application. DisplayStatusBar = False – вилучення рядка стану. |
ActiveWorkbook
|
Звернення до активної робочої книги. Приклади: x = Application.ActiveWorkbook.Name – ім’я активної робочої книги направляється до змінної х; MsgBox x – вивід на екран імені активної книги; Application.ActiveWorkbook.Close = Закриття активної книги.
|
ActiveSheet
|
Звернення до активного аркуша робочої книги. Приклади: x = Application.ActiveSheet.Name – ім’я активного аркуша направляється до змінної х; MsgBox x – вивід на екран імені активного аркуша |
ActiveCell |
Звернення до комірки, в якій знаходиться курсор. Приклади: x = Application.ActiveCell.Address – фіксація адреси активної клітинки у змінній х; MsgBox x – на екран виводиться адреса активної клітинки. Application.ActiveCell.Font.Bold =True – для активної клітинки встановлюється напівжирний шрифт; Application.ActiveCell.Value=”Разом” – введення до активної клітинки тексту Разом; Application.ActiveCell.Formula=”=A5*C3” – введення до активної клітинки формули. |
OperatingSystem |
Визначення типу операційної системи. Приклад: MsgBox Application. OperatingSystem – вивід на екран імені операційної системи, з якою працює додаток. |
Таблиця 2
Методи об’єкта Application:
Методи |
Опис і синтаксис запису методу |
Run |
Запуск на виконання процедури або макросу. Приклад: Application. Run Macro:=”Звіт” – запуск процедури Звіт. |
Quit |
Закриття додатку. Приклад: Application. Quit – закриття Excel. |
OnTime |
Призначення виконання процедури на певний час. Приклад: команда Application.OnTime Now + TimeValue("00:00:30"), "DialVikno", яку можна включити до складу будь-якої процедури, демонструє процес запуска на виконання процедури DialVikno через 30 сек. від поточного часу. |
Wait |
Тимчасове призупинення роботи застосування: Application. Wait”13:10:00”– згідно наведеної команди робота застосування відновиться о 13 год. 10 хв. |
Роль об’єкта Application не обмежується визначенням параметрів Excel і використанням методів. Об’єкт Application включає в себе стандартні функції Excel і надає можливість викликати їх до роботи. Приклад виклику до роботи стандартної функції Sum() наведений у лістингу 1.
Лістинг 1. Використання стандартної функції Excel Sum для обрахування значень клітинок D4:D8 аркуша1 і виводу результату у клітинку D9
Public Sub Vucor()
ActiveCell = Application.Sum(Worksheets(1).Range("D4:D8"))
Range("D9").Select ‘ Виділення клітинки D9
End Sub
Наведені приклади констатують, що властивості і методи для об’єкта визначаються спеціальними операторами мови VBA, які оформляються у вигляді окремих інструкцій.
1.2. Об’єкт Workbook
Кожна відкрита робоча книга Excel представляється об’єктом Workbook, що входить до колекції Workbooks об’єкта Application. Основні властивості і методи об’єкта Workbook наведені в табл. 3 і 4.
Таблиця 3
Основні властивості об’єкту Workbook
Властивості |
Синтаксис запису властивості і характеристика дії |
ActiveSheet |
Звернення до аркуша активної книги (MsgBox ActiveSheet.Name – на екран виводиться ім’я активного аркуша); |
Count |
Підраховує кількість об’єктів сімейства Workbooks. Приклад: MsgBox Workbooks.Count – на екран виводиться повідомлення про кількість відкритих книг. |
Worksheets
|
Звернення до колекції аркушів (Sheets) активної книги. Приклад: MsgBox Worksheets.Count – вивід на екран кількості аркушів в поточній книзі. |
CreateBackup |
Створення резервної книги, якщо властивості присвоїти значення True, тоді під час збереження робочої книги створюється її резервна копія. |
Таблиця 4
Методи об’єкту Workbook
Методи |
Синтаксис запису метода і характеристика дії |
Activate |
Робить відкриту книгу активною: Workbooks("Poscuk.xls"). Activate ‘З попередньо відкритих декількох книг активною стає книга Poscuk.xls |
Add |
Дозволяє створити нову робочу книгу: Workbooks.Add – створення нової книги |
Save |
Зберегти робочу книгу |
SaveAs |
Зберегти як |
Close |
Закрити робочу книгу |
Open |
Відкрити існуючу робочу книгу: Application.Workbooks.Open ("d:\Str\Poscuk.xls") ‘Відкриття книги з іменем Poscuk.xls, що збережена в папці Str на диску D |
PrintPreview |
Відображення робочої книги в режимі попереднього перегляду |
На лістингу 2 наведена процедура використання методів об’єкта Workbooks:
Лістинг 2. Приклад використання методів об’єкта Workbooks
Public Sub Створення()
Dim Book As Workbook оголошення змінної як об’єкт Workbook
Set Book = Workbooks.Add ‘Створення нової книги і оголошення її Book
Book.SaveAs "Приклад" ‘ Збереження книги з ім’ям Приклад
MsgBox ("Створена книга з ім'ям: ") & Book.Name ‘ Вивід на екран імені
збереженої книги
Book.Close ‘Закриття робочої книги
End Sub
1.3. Об’єкт WorkSheet
На робочому аркуші, як правило, зосереджуються дані, що опрацьовуються. Об’єкту WorkSheet (аркуш) притаманний ряд властивостей і методів, що забезпечують можливість модіфікувати дані робочого аркуша і керувати їх відображенням (табл. 5, 6).
Таблиця 5
Основні властивості об’єкта WorkSheet:
Властивості |
Синтаксис запису властивості і характеристика дії |
Visible |
Присутність/відсутність робочого аркуша на екрані, властивість може приймати значення True, False. Приклади: Worksheets(2). Visible = False – вилучення з екрана аркуша 2; Worksheets(2). Visible = True – виведення на екран аркуша 2 |
Cells |
Звернення до комірок робочого аркуша. Властивість Cells може використовуватися без аргументів (звернення до всіх комірок діапазона) і з аргументами (звернення до конкретних комірок, для такого звернення використовують наступний синтаксис Cells(Row, Col), перший параметр визначає рядок електронної таблиці, другий – стовпець).Приклади: Cells.Font.Name = "Arial" ‘Встановлення шрифту Arial для всіх комірок аркуша; Cells (3, 5).Font.Size = 25 ‘Встановлення розміру шрифту висотою 25 пунктів для комірки Е3 (перший аргумент вказує на номер рядка аркуша, другий – стовпця) |
Columns |
Звернення до стовпців поточного робочого аркуша. Приклад: Selection.Columns.count – підрахунок кількості виділених стовпців таблиці; |
Name |
Дає змогу отримати або змінити ім’я робочого аркуша Приклад: Worksheet.Name = Format (Date, "d mmmm yyyy" – аркушу книги надається ім’я поточної дати. |
Range |
Звернення до визначеної комірки, діапазону комірок робочого аркуша. Приклади: Range ("C21").Select – виділення комірки С21; Range ("A21:C10"). Select – виділення інтервалу комірок. |
UsedRange |
Визначення діапазону комірок, в яких містяться дані. Приклад: Worksheets(1).UsedRange.Clear – вилучення даних з першого аркуша активної книги. |
Union |
Об’єднання діапазонів комірок в одне ціле. Приклад: Union(Range(“A5:C9”), Range(“D1:F12”)).Select – виділення двох блоків комірок активного аркуша поточної книги |
Таблиця 6
Методи об’єкта WorkSheet:
Методи |
Опис і синтаксис запису методу |
Activate
|
Активізація робочого аркуша. Приклад: WorkSheets(1). Activate – активізація робочого аркуша1 поточної робочої книги. |
Add
|
Додавання робочого аркуша до активної робочої книги. Приклад: ActivateWorkbook.WorkSheets.Add – вставка нового аркуша перед активним аркушем активної робочої книги. |
Delete |
Вилучення робочого аркуша. Приклад: WorkSheets(1). Delete – вилучення першого робочого аркуша з активної книги. |
Copy |
Копіювання робочого аркуша |
1.4. Об’єкт Range
Певні дії, що інструкції VBA, відносяться до конкретної частини робочого аркуша. Зрозуміло, що в подібних випадках виникає необхідність у використанні засобів, які надають можливість ідентифікувати необхідні фрагменти об’єкту: окрему комірку, діапазон комірок, робочий аркуш Excel в цілому. Для виконання таких дій у VBA передбачений об’єкт Range. Синтаксис звернення до об’єкту Range може мати такий вид: Посилання. Range (“комірка”). властивість/метод
У даному випадку аргумент Посилання являє собою звернення до робочого аркуша. Якщо звернення здійснюється до активного робочого аркуша, тоді об’єктом посилання є ActiveSheet. Якщо звернення здійснюється до неактивного робочого аркуша, тоді об’єктом посилання є шлях до нього, в шлях включається ім’я книги, до якої входить аркуш, ім’я аркуша. Аргумент “комірка” визначає, які комірки будуть включені до діапазону: звернення до конкретної комірки позначається буквою стовпця і номером рядка – “F9”; звернення до діапазону комірок позначається через дві крапки – “А8:С12”. Аргумент властивість/метод визначає яка властивість, або який метод застосовується до об’єкта Range. Перелік основних властивостей і методів наведений у табл. 7, 8.
Таблиця 7
Основні властивості об’єкта Range.
Властивості |
Синтаксис запису властивості і характеристика дії |
Value |
Визначає роботу комірки з даними. Приклад1: х=Range(“B4”). Value – змінній х присвоюється значення з комірки В4; приклад2; Range(“B4”). Value=372 – у комірці В4 фіксується число 372; приклад 3: ActiveSheet.Range(“C21”).Value = “Підсумок” – у комірці С21 фіксується текст Підсумок. |
Formula |
Визначає роботу комірки з формулами. Приклад: Range(“B4”). Formula = ”=C9*A5 ” – у комірку В4 вводиться формула =C9*A5 |
FormulaArray |
Надання комірці (коміркам) властивості на сприйняття формули масиву. Приклад: Range(“D4”). FormulaArray = ”=Sum(B3:B8* C4:C9) ” – у комірку D4 вводиться формула масиву ”=Sum(B3:B8* C4:C9) |
Name |
Надає можливість надавати комірці або діапазону Formula комірок імена: Range(“B3:В14”). Name = ”Кількість” |
Count |
Визначити кількість об’єктів в наборі: Х = Range(“B3:В14”).Rows.Count – змінній Х присвоюється значення кількості рядків у діапазоні B3:В14 |
CurrentRegion |
Звернення до діапазону комірок, що обмежений пустими рядками і пустими стовпцями. Приклад 1: уявимо собі, що ми знаємо адресу верхнього лівого кута (С2) таблиці, але нам не відомо, скільки рядків і стовпців займає вся таблиця. Для реалізації задачі скористаємось такими інструкціями: x = Range("C2").CurrentRegion.Rows.Count y = Range("C2").CurrentRegion.Columns.Count MsgBox "Таблиця займає " & x & " рядків" _ & " i " & y & " стовпців" Приклад 2: Виконати операцію “копіювання і вставка” таблиці, верхній лівий кут якої займає клітинку С2. Результат копіювання вставити в поточний аркуш починаючи з клітинки F7: Range("C2").CurrentRegion.Select ‘ Виділення таблиці Selection.Copy ‘Копіювання виділеного об’єкта Range("F7").Select ‘ Переміщення курсова в клітинку F7 ActiveSheet.Paste ‘ Вставка діапазону з буфера Application.CutCopyMode = False ‘Деактивація операції копіювання/ вставка Властивість використовують також для отримання діапазону, до якого входить заголовок таблиці і всі раніше введені дані (іншими словами властивість використовують для того, щоб знайти перший пустий рядок у таблиці з даними з метою поповнення таблиці новими даними) |
Cells |
Звернення до комірок робочого аркуша, синтаксис: Cells(№ рядка, № стовпця). Властивість Cells може використовуватися: по-перше, як альтернативний спосіб роботи з коміркою, наприклад, звернення до комірки В3 як об’єкта може бути описано так Range (“B3”) або Cells(3,2); по-друге, як властивість об’єкта Range – звернення до тієї ж комірки В3 може бути записано і так Range(Cells (3,2)), а звернення до інтервалу комірок A2:C5 можна записати таким чином: Range(Cells(2, 1), Cells(5, 3)).Select. Спосіб адресації комірок визначається користувачем і аргументується, в окремих випадках, зручністю адресації. Якщо властивість Cells використовується без аргументів, тоді вона посилається на всі комірки діапазону (Range.Cells) або робочого аркуша (властивість WorkSheet.Cells). Тому наступну інструкцію можна використовувати, наприклад, для зміни фонового кольору комірок. Наприклад, діапазону Range(“A1:B8”) слід надати світло ліловий фон: Range(“A1:B8”). Cells.Interior. Color = RGB(220,220,255). Аналогічно, наведені нижче інструкції змінюють шрифт і кегль всіх комірок вказаного робочого аркуша: Worksheets(1).Cells.Font.Name = "Arial" Worksheets(1).Cells.Font.Size = 13 |
Font |
Надає об’єкту властивість на визначення шрифту. За допомогою властивості Font можна визначати ім’я шрифту (Name), стиль (FontStyle), розмір (Size), колір (ColorIndex) тощо. Приклад встановлення для діапазону комірок А1:А15 шрифту Verdana, висотою шрифту 15 пунктів, напівжирного, червоного коліру: With Range("A1:F15").Font .Name = "Verdana" .Size = 15 .FontStyle = "Bold" .ColorIndex = 3 End With |
Таблиця 8
Методи об’єкту Range
Методи |
Синтаксис запису методу і характеристика дії |
Activate |
Активізація (виділення) діапазону комірок. Приклади: Range("A1").Activate – активізація комірки А1; Range("A3:B7").Activate – активізація (виділення) блоку комірок. |
Select |
Виділення діапазону комірок. Метод фактично аналог методу Activate |
Clear |
Очистка змісту діапазону комірок: Range("A3:B7"). Clear |
Address |
Визначає адресу комірки (блоку комірок), метод може мати свої аргументи – MsgBox ActiveCell.Address – на екрані відображається вікно з поточною адресою курсору |
Copy, Delete, Cut |
Копіювання, вилучення, копіювання з вилученням вмісту комірки (діапазону комірок). |
Columns, Rows |
Визначають відповідно стовпці і рядки діапазону. У наступному прикладі змінним X i Y надаються значення, що дорівнюють кількості стовпців і рядків у виділеному діапазоні: X=Selection.Columns.Count Y= Selection.Rows.Count |
Offset |
Переміщення курсору відносно його поточного розташування, що специфіковане в аргументах метода: синтаксис – Offset(x,y), де: Х – ціле число, що вказує зміщення по рядкам; Y – ціле число, що вказує зміщення по стовпцям. Якщо ці аргументи додатні, тоді зміщення здійснюється вниз і праворуч.При від’ємних значеннях – вверх і вліво. Приклади: ActiveCell.Offset(-1, -2).Activate – переміщення табличного курсору відносно його поточного значення на один рядок вверх і на два стовпця вліво і активізація нової адреси; ActiveCell.Offset(1,- 2).Activate – переміщення табличного курсору відносно його поточного значення на один рядок вниз і на два стовпця вліво і активізація нової адреси. |