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 Template
  • За тези данни първо трябва да намерим кой е последният използван ред и колона, така че дефинирайте две променливи, за да намерите това.

Код:

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

  • За да намерите последния използван ред и колона, използвайте кода по-долу.

Код:

LR = клетки (редове. Брой, 1). Край (xlUp). Ред LC = клетки (1, колони. Брой). Край (xlToLeft). Колона

  • Сега дефинирайте още една променлива, която да съдържа препратката към данните.

Код:

 Dim Rng As Range 

  • Сега задайте препратката към тази променлива, като използвате кода по-долу.

Код:

 Задайте Rng = клетки (1, 1). Преоразмерете (LR, LC)

Сега трябва да използваме метода VBA “ListObject.Add”, за да създадем таблица и по-долу е синтаксисът на същия.

ListObject.Add (Source, XlListObjectHasHeaders, Destination, 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 LC As Long LR = Cells (Rows.Count, 1) .End (xlUp) .Row LC = Cells (1, Columns.Count) .End (xlToLeft). Задайте Rng = клетки (1, 1). Преоразмерете (LR, LC) Dim Ws As Worksheet Set 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.