VBA ListObjects | Руководство по таблицам ListObject Excel в 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 = ячейки (Rows.Count, 1) .End (xlUp) .Row LC = Cells (1, Columns.Count) .End (xlToLeft) .Column

  • Теперь определите еще одну переменную для хранения ссылки на данные.

Код:

 Dim Rng As Range 

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

Код:

 Установите Rng = Cells (1, 1) .Resize (LR, LC)

Теперь нам нужно использовать метод VBA «ListObject.Add» для создания таблицы, и ниже приводится его синтаксис.

ListObject.Add (Источник, XlListObjectHasHeaders, Назначение, TableStyleName)

Источник: это не то, для какого диапазона ячеек мы вставляем таблицу. Таким образом, мы можем указать здесь два аргумента, то есть «xlSrcRange» и «xlSrcExternal».

XlListObjectHasHeaders: имеет ли таблица вставляемых данных заголовки или нет. Если да, мы можем предоставить «xlYes», если нет, мы можем предоставить «xlNo».

Назначение: это не что иное, как наш диапазон данных.

Стиль таблицы: если вы хотите применить любой стиль таблицы, мы можем предоставить стили.

  • Хорошо, теперь в активном листе мы создаем таблицу, поэтому приведенный ниже код создаст для нас таблицу.

Код:

 Dim Ws As Worksheet Set 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 = Cells (1, 1) .Resize (LR, LC) Dim Ws As Worksheet Установить Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange, xllistobjecthasheaders: = xlYes, Destination: = Rng Ws.ListObjects (1) .name = " EmpTable "End Sub 

Хорошо, давайте запустим код и увидим волшебство.

Он создал таблицу для упомянутых данных и присвоил ей имя «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.