39;єкти. Колекція
Worksheets складається з усіх об'єктів Worksheet робочої книги Workbook. Об'єкт
Worksheet включає інші об'єкти, серед яких наступні:
ChartObjects (колекція об'єктів ChartQbject - елементів діаграм);
Range - діапазон;
PageSetup - параметри сторінки;
PivotTables (колекція об'єктів PivotTable - зведених таблиць). p align=center> Про колекціях
Однією з ключових концепцій в програмуванні на мові VBA є колекції .
Колекція - це група об'єктів одного класу (І сама колекція теж є об'єктом). p> Як вказувалося вище. Workbooks - це колекція всіх відкритих в даний момент об'єктів Workbook. Worksheets - колекція всіх об'єктів Worksheet, які міститься в конкретному об'єкті Workbook. Ви можете одночасно керувати цілою колекцією об'єктів або окремим об'єктом цієї колекції. Щоб послатися на один об'єкт з колекції, введіть назву або номер об'єкта в дужках після назви колекції:
Worksheets ("Лист1")
Якщо аркуш Лист1 - це перший робочий лист в колекції, те можна використовувати наступне посилання.
Worksheets (1)
На другий лист в робочій книзі Workbook посилаються як на Worksheets (2) і т.д.
Крім того, існує колекція з назвою Sheets, складається з усіх листів робочої книги, робочих листів і листів діаграм. Якщо Лист1 - перший аркуш у книзі, то на нього можна послатися так:
Sheets (1)
Посилання на об'єкти
Якщо ви посилаєтеся на об'єкт в VBA, для звернення до нього вводяться назви всіх розташованих вище в ієрархічній структурі об'єктів, розділених крапкою. Що робити, якщо в Excel відкрито дві робочих книги, і в обох є робочий лист з назвою Лист1? У цьому випадку на засланні згадується контейнер необхідного об'єкту:
Workbooks ("Книга1"). Worksheets ("Лист1")
Без вказівки робочої книги редактор Visual Basic шукав би лист Л і з т1 в активній робочій книзі, щоб послатися на певний діапазон (наприклад, клітинку А1) на робочому аркуші з назвою Лист1 в робочій книзі Книга1, можна використовувати наступне вираз:
Повна посилання з попереднього прикладу включає об'єкт A pplication і виглядає таким чином:
Application. Workbooks ("К н і г а1"). Worksheets ("Л і з т1") . R a n g e ("A l")
Проте в більшості випадків можна опускати об'єкт A pplication в посиланнях {Крім нього використовуватися більше нема чому). Якщо об'єкт Книга1 - це активна робоча книга, то опустіть посилання на неї і запишіть розглядається вираз таким чином:
Worksheets ("Лист1"). Range ("Al")
Якщо Лист1 є активним робочим листом, можна ще більше спростити вираз:
Range ("A1")
У Excel відсутній об'єкт окремої комірки. Окрема осередок являє собою об'єкт Range, що складається з одного елемента. p> Прості номери єкти (як у наведених прикладах) нічого не виконують. Щоб виконати дію, прочитайте або змініть властивості об'єкта або задайте метод, який виконується по відношенню до об'єкта.
Властивості і методи
Заплутатися в властивості і методах нескладно: їх існує кілька тисяч. У цьому розділі показано, як здійснюється доступ до властивостей і методів об'єктів.
Властивості об'єктів
Всі об'єкти володіють властивостями. Наприклад, об'єкт Range має властивість з назвою Value. Ви можете створити оператор VBA, щоб відобразити властивість Value або задати властивості Value певне значення. Нижче наведена процедура, яка використовує
функцію VBA MsgBox для відображення вікна, в якому представлено значення клітинки Al листа Лист1 активної робочої книги.
Sub ShowValueO
MsgBox Worksheets ("Лист1"). Range ("Al"). Value
End Sub
Код попереднього приклад відображає поточний значення властивості Value для конкретної комірки - А1 робочого листа Лист1 активної робочої книги. Зверніть увагу, що якщо в активній книзі відсутній лист з назвою Лист1 , то макрос видасть помилку.
Що необхідно зробити, щоб змінити властивість Value? Нижче наведена процедура щодо зміни значення комірки А1 шляхом визначення значення властивості Value.
Sub ChangeValue ()
Worksheets ("Лист1). Range (" Al "). Value = 123
End Sub
Після виконання цієї процедури осередок А1 листа Лист1 отримує значення 123. Ви можете ввести описані процедури в модуль і протестувати їх.
Багато об'єктів мають властивість за замовчуванням. Для об'єкта Range властивістю за замовчуванням є Value. Отже, вираження value у наведеному вище коді можна опустити, і нічого не зміниться. Однак краще включати посилання на властивість, навіть якщо ...