Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Розуміння об'єктної моделі Excel | Вступ до VBA та об'єктної моделі Excel
Excel VBA для автоматизації бізнесу

Розуміння об'єктної моделі Excel

Свайпніть щоб показати меню

Кожен рядок VBA, який ви коли-небудь напишете в Excel, є реченням про об'єкти: щось існує (Application, Workbook, Worksheet, Range), і ви або зчитуєте одну з його властивостей, або просите виконати один із його методів. Як тільки ця ієрархія стане зрозумілою, решта мови — це переважно словниковий запас.

Зчитування ієрархії

  • Application — уся запущена копія Excel; вершина кожної ієрархії;
  • Workbooks — колекція всіх відкритих файлів; окремий файл — це Workbook, наприклад, Section_1_VBA_Intro.xlsm;
  • Worksheets — колекція вкладок у книзі; окрема вкладка — це Worksheet, наприклад, "Employees";
  • Range — одна клітинка, блок клітинок, цілий рядок або стовпець;
  • Cells / Value — фактичні дані, що містяться в Range.

Рідко потрібно вводити весь ланцюжок від Application донизу — VBA припускає, що мається на увазі активна книга та активний аркуш, якщо не вказано інше, — але явне зазначення об'єктів відрізняє ненадійний код від надійного. Порівняйте два способи запису однієї й тієї ж інструкції:

' Fragile — depends on whatever sheet happens to be active
Range("F2").Value = 65000
 
' Reliable — states exactly which workbook and sheet, no matter what's on screen
ThisWorkbook.Worksheets("Employees").Range("F2").Value = 65000

Друга версія буде працювати навіть якщо у користувача відкрито ще три книги та вибрано інший аркуш — звичка, яка має велике значення, коли ваші макроси стають довшими за кілька рядків. Ви постійно використовуватимете ThisWorkbook.Worksheets("SheetName") у такому вигляді протягом усього курсу.

Навігація по об'єктних зв'язках у Вікні негайного виконання

Вікно негайного виконання (Вигляд → Вікно негайного виконання або Ctrl+G у VBE; ^ ⌘ G на Mac) дозволяє тестувати окремий рядок коду без обгортання його у Sub.

carousel-imgcarousel-img

Введіть рядок, що починається зі знака питання, і натисніть Enter, щоб одразу побачити результат. Спробуйте ці команди для Section_1_VBA_Intro.xlsm:

?ThisWorkbook.Name
?ThisWorkbook.Worksheets("Employees").Range("B3").Value
?ThisWorkbook.Worksheets("Employees").Range("A1").CurrentRegion.Address
?ThisWorkbook.Worksheets.Count

Третій рядок знайомить з властивістю CurrentRegion, яка розширюється від однієї клітинки до цілого суміжного блоку даних навколо неї.

Завдання

  1. У Вікні негайного виконання напишіть один рядок, який виводить Посаду Olivia Brown (рядок 4) без попереднього вибору комірки — зверніться до неї безпосередньо через ієрархію об'єктів.
  2. Напишіть другий рядок, який виводить кількість рядків у таблиці Employees за допомогою CurrentRegion.Rows.Count.
Підказка
expand arrow

Зверніться так: ThisWorkbook.Worksheets("Employees").Range("D4").Value — рядок 4 це Olivia Brown, стовпець D — Посада.

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 4

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 1. Розділ 4
some-alt