Хоча знання того, як посилатися на об’єкти є важливим, ви не можете зробити жодного корисного програмування Excel VBA, просто посилаючись на об’єкт. Щоб зробити щось значуще, ви повинні зробити одну з двох речей:
-
Читайте або змінюйте властивості об’єкта .
-
Вкажіть метод дії, який буде використовуватися з об’єктом.
З буквально тисячами доступних властивостей і методів ви можете легко бути приголомшеними. Просто пам’ятайте, що вам ніколи не потрібно буде використовувати більшість доступних властивостей і методів.
Властивості об'єкта
Кожен об’єкт має властивості. Ви можете розглядати властивості як атрибути, які описують об’єкт. Властивості об’єкта визначають, як він виглядає, як він поводиться і навіть чи його видно. Використовуючи VBA, ви можете робити дві речі з властивостями об’єкта:
Наприклад, об’єкт діапазону з однією клітинкою має властивість під назвою Value. Властивість Value зберігає значення, що міститься в комірці. Ви можете написати код VBA, щоб відобразити властивість Value, або ви можете написати код VBA, щоб установити для властивості Value певне значення. Наступний макрос використовує вбудовану функцію MsgBox VBA, щоб відкрити вікно, яке відображає значення в клітинці A1 на листі 1 активної книги:
У цьому вікні повідомлення відображається властивість Value об’єкта Range.
Sub ShowValue()
Зміст = Робочі аркуші(“Аркуш1”).Діапазон(“A1”).Значення
Вміст MsgBox
Кінець суб
До речі, MsgBox — дуже корисна функція. Ви можете використовувати його для відображення результатів, поки Excel виконує ваш код VBA.
Код у попередньому прикладі відображає поточне налаштування властивості Value комірки. Що робити, якщо ви хочете змінити налаштування для цієї властивості? Наступний макрос змінює значення в клітинці A1, змінюючи властивість комірки Value:
Sub ChangeValue()
Робочі аркуші(“Аркуш1”).Діапазон(“A1”).Значення = 994,92
Кінець суб
Після того, як Excel виконає цю процедуру, клітинка A1 на аркуші 1 активної книги містить значення 994,92. Якщо в активній книзі немає аркуша з іменем Sheet1, результатом виконання цього макросу буде повідомлення про помилку. VBA просто дотримується інструкцій і не може працювати з неіснуючим аркушем.
Кожен об’єкт має свій набір властивостей, хоча деякі властивості є загальними для багатьох об’єктів. Наприклад, багато (але не всі) об’єкти мають властивість Visible. Більшість об’єктів також мають властивість Name.
Деякі властивості об’єктів є властивостями лише для читання, а це означає, що ваш код може отримати значення властивості, але не може його змінити.
Колекція – це також об’єкт. Це означає, що колекція також має властивості. Наприклад, ви можете визначити, скільки книг відкрито, звернувшись до властивості Count колекції Workbooks. Наступна процедура VBA відображає вікно повідомлення, яке повідомляє, скільки відкритих книг:
Підрахунки ()
MsgBox Workbooks.Count
Кінець суб
Об’єктні методи
Крім властивостей, об’єкти мають методи. Метод є дія виконати з об'єктом. Метод може змінити властивості об’єкта або змусити об’єкт щось робити.
У цьому простому прикладі використовується метод ClearContents для об’єкта Range, щоб стерти вміст 12 комірок на активному аркуші:
Sub ClearRange()
Діапазон (“A1:A12”). ClearContents
Кінець суб
Деякі методи беруть один або кілька аргументів. Аргумент є значенням , яке додатково визначає дію для виконання. Ви розміщуєте аргументи методу після методу, розділяючи їх пробілом. Кілька аргументів розділяються комою.
У наведеному нижче прикладі активується Sheet1 (в активній книзі), а потім копіюється вміст клітинки A1 до клітинки B1 за допомогою методу Copy об’єкта Range. У цьому прикладі метод Copy має один аргумент, який є діапазоном призначення для операції копіювання:
Sub CopyOne()
Робочі аркуші («Аркуш1»). Активувати
Діапазон(“A1”). Діапазон копіювання(“B1”)
Кінець суб
Зверніть увагу, що посилання на робочий аркуш було пропущено, коли посилалися на об’єкти Range. Це можна зробити безпечно, оскільки використовувався оператор для активації Sheet1. (за допомогою методу Activate).
Інший спосіб вказати аргумент для методу — це використовувати офіційну назву аргументу, за яким слід двокрапка та знак рівності. Використання іменованих аргументів необов’язкове, але часто це може полегшити розуміння коду. Другий оператор у процедурі CopyOne можна записати так:
Діапазон(“A1”). Призначення копіювання:=Діапазон(“B1”)
Зверніть увагу на невелику підказку під час введення оператора. Ця підказка показує офіційну назву аргументу.
Під час введення VBE відображає список аргументів.
Оскільки колекція також є об’єктом, колекції мають методи. Наступний макрос використовує метод Add для колекції Workbooks:
Підкладка AddAWworkbook()
Робочі зошити.Доп
Кінець суб
Як ви могли очікувати, цей оператор створює нову книгу. Іншими словами, він додає нову книгу до колекції Workbooks. Після виконання цього макросу активною книгою буде нова книга.
Об’єктні події
Є ще одна тема, про яку вам потрібно знати: події. Об’єкти реагують на різні події, що відбуваються. Наприклад, коли ви працюєте в Excel і активуєте іншу книгу, виникає подія «Активувати книгу». Наприклад, ви можете мати макрос VBA, який призначений для виконання щоразу, коли відбувається подія Activate для певного об’єкта Workbook.
Excel підтримує багато подій, але не всі об’єкти можуть реагувати на всі події. А деякі об’єкти не реагують ні на які події. Єдині події, які ви можете використовувати, — це події, доступні програмістами Microsoft Excel.