VBA ListObjects | Посібник з таблиць Excel ListObject у Excel VBA

Що таке ListObjects у VBA?

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

VBA ListObject - це спосіб посилання на таблиці Excel під час написання коду VBA. Використовуючи VBA LISTOBJECTS, ми можемо створювати, видаляти таблиці і повністю грати з таблицями Excel у коді VBA. Таблиці Excel хитрі, новачкам і навіть до певної міри користувачам середнього рівня важко працювати з таблицями. Оскільки в цій статті йдеться про посилання на таблиці Excel у кодуванні VBA, краще мати хороші знання про таблиці в Excel.

Коли дані перетворюються в таблиці, ми більше не працюємо з діапазоном комірок, а нам потрібно працювати з діапазонами таблиць, тому в цій статті ми покажемо вам, як працювати з таблицями Excel для ефективного написання кодів VBA.

Створіть формат таблиці за допомогою ListObjects у програмі Excel VBA

Наприклад, подивіться наведені нижче дані Excel.

Використовуючи код VBA ListObject, ми створимо формат таблиці для цих даних.

Завантажити цей шаблон VBA ListObjects Excel можна тут - Шаблон VBA ListObjects Excel
  • Для цих даних спочатку нам потрібно знайти останній використовуваний рядок і стовпець, тому визначте дві змінні, щоб знайти це.

Код:

 Sub List_Objects_Example1 () Dim LR As Long Dim LC As Long End Sub 

  • Щоб знайти останній використовуваний рядок і стовпець, використовуйте наведений нижче код.

Код:

LR = комірки (рядки. Кількість, 1). Кінець (xlUp). Рядок LC = комірки (1, стовпці. Кількість). Кінець (xlToLeft). Стовпець

  • Тепер визначте ще одну змінну для зберігання посилання на дані.

Код:

 Приглушити Rng як діапазон 

  • Тепер встановіть посилання на цю змінну, використовуючи код нижче.

Код:

 Встановити Rng = клітинки (1, 1). Змінити розмір (LR, LC)

Тепер нам потрібно використовувати метод VBA “ListObject.Add” для створення таблиці, а нижче - синтаксис того самого.

ListObject.Add (Source, XlListObjectHasHeaders, Destination, TableStyleName)

Джерело: Це ніщо, для якого діапазону комірок ми вставляємо таблицю. Тож ми можемо навести тут два аргументи, тобто “xlSrcRange” та “xlSrcExternal”.

XlListObjectHasHeaders: Якщо таблиця, що вставляє дані, має заголовки чи ні. Якщо так, ми можемо вказати "xlYes", якщо ні, ми можемо вказати "xlNo".

Призначення: це не що інше, як наш діапазон даних.

Стиль таблиці: якщо ви хочете застосувати будь-який стиль таблиці, ми можемо надати стилі.

  • Добре, зараз на активному аркуші ми створюємо таблицю, тому нижче наведений код створить для нас таблицю.

Код:

 Вимкнути Ws як робочий аркуш Набір Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange, xllistobjecthasheaders: = xlYes, Destination: = Rng

  • Після цього нам потрібно дати назву цій таблиці.

Код:

Ws.ListObjects (1) .name = "EmpTable"

  • Нижче наведено повний код для довідки.

Код:

 Sub List_Objects_Example1 () Dim LR As Long Dim LC As Long LR = Cells (Rows.Count, 1). End (xlUp) .Row LC = Cells (1, Columns.Count) .End (xlToLeft). Column Dim Rng As Range Встановити Rng = Осередки (1, 1). Змінити розмір (LR, LC) Затемнити Ws Як робочий аркуш Встановити Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange, xllistobjecthasheaders: = xlYes, Destination: = Rng Ws.ListObjects (1) .name = " Таблиця "Кінець" 

Гаразд, давайте запустимо код і побачимо магію.

Він створив таблицю до згаданих даних і назвав таблицю як “EmpTable” .

Форматування таблиць Excel за допомогою VBA ListObjects

Після створення таблиці Excel ми можемо працювати з таблицями за допомогою колекції vba ListObject.

  • Спочатку визначте змінну як “ListObject”.

Код:

 Sub List_Objects_Example2() Dim MyTable As ListObject End Sub 

  • Now set the reference to this variable by using the table name.

Code:

 Sub List_Objects_Example2() Dim MyTable As ListObject Set MyTable = ActiveSheet.ListObjects("EmpTable") End Sub 

Now the variable “MyTable” holds the reference for the table “EmpTable”.

  • Enter the variable name and put a dot to see the properties and methods of the VBA ListObject.

For example, if we want to select the entire table then we need to use the “Range” object and under this, we need to use the “Select” method.

Code:

MyTable.Range.Select

This would select the entire data table including the heading.

  • If you want to select only the contents of the table without headers then we need to use “DataBodyRange”.

Code:

MyTable.DataBodyRange.Select

Like this, we can play around with tables.

  • Below is the list of activity codes for your reference.

Code:

 Sub List_Objects_Example2() Dim MyTable As ListObject Set MyTable = ActiveSheet.ListObjects("EmpTable") MyTable.DataBodyRange.Select 'To Select data range without headers MyTable.Range.Select 'To Select data range with headers MyTable.HeaderRowRange.Select 'To Select table header rows MyTable.ListColumns(2).Range.Select 'To select column 2 including header MyTable.ListColumns(2).DataBodyRange.Select 'To select column 2 without header End Sub 

Like this, we can use the “ListObject” collection to play around with excel tables.

Things to Remember

  • VBA ListObject is the collection of objects to reference excel tables.
  • To access ListObject collection first we need to specify what worksheet we are referring to is.