VBA ListObjects

Vad är ListObjects i VBA?

I en tabell är det normalt sett en datamängd men i VBA-terminologi finns det mycket mer, eftersom det finns intervall för det totala datalistan, kolumnen är känd som listkolumn och rad är känd som listrad och så vidare , så för att komma åt de här egenskaperna har vi en inbyggd funktion som kallas Listobjects och som används med kalkylbladets funktion.

VBA ListObject är ett sätt att hänvisa till exceltabellerna medan du skriver VBA-koden. Genom att använda VBA LISTOBJECTS kan vi skapa, ta bort tabell och helt och hållet kan vi spela med excel-tabeller i VBA-kod. Excel-tabeller är knepiga, nybörjare och till och med i en viss grad mellanliggande användare har svårt att arbeta med tabeller. Eftersom den här artikeln talar om att referera till excel-tabeller i VBA-kodning är det bättre att du har god kunskap om tabeller i Excel.

När data konverteras till tabeller arbetar vi inte längre med ett cellområde utan vi behöver arbeta med tabellintervall, så i den här artikeln visar vi dig hur du arbetar med exceltabeller för att skriva VBA-koder effektivt.

Skapa tabellformat med ListObjects i Excel VBA

Se till exempel nedanstående Excel-data.

Med hjälp av VBA ListObject-kod skapar vi ett tabellformat för dessa data.

Du kan ladda ner denna VBA ListObjects Excel-mall här - VBA ListObjects Excel-mall
  • För denna information måste vi först hitta vad som är den senast använda raden och kolumnen, så definiera två variabler för att hitta detta.

Koda:

 Sub List_Objects_Example1 () Dim LR Så lång Dim LC Som Long End Sub 

  • Använd nedanstående kod för att hitta den senast använda raden och kolumnen.

Koda:

LR = Cells (Rows.Count, 1) .End (xlUp) .Row LC = Cells (1, Columns.Count) .End (xlToLeft) .Column

  • Definiera nu ytterligare en variabel för att hålla referensen för data.

Koda:

 Dim Rng As Range 

  • Ställ nu referensen till denna variabel med hjälp av nedanstående kod.

Koda:

 Ställ in Rng = celler (1, 1). Ändra storlek (LR, LC)

Nu måste vi använda VBA "ListObject.Add" -metoden för att skapa en tabell och nedan är syntaxen för densamma.

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

Källa: Detta är inget för vilket cellområde vi sätter in tabellen. Så vi kan ange två argument här, dvs “xlSrcRange” och “xlSrcExternal”.

XlListObjectHasHeaders: Om tabellen med data har rubriker eller inte. Om ja kan vi tillhandahålla “xlYes” om inte kan vi tillhandahålla “xlNo”.

Destination: Detta är inget annat än vårt dataområde.

Tabellstil: Om du vill tillämpa någon bordsstil kan vi tillhandahålla format.

  • Ok, nu i det aktiva arket skapar vi tabellen, så nedan skulle kod skapa en tabell för oss.

Koda:

 Dim Ws som kalkyluppsättning Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange, xllistobjecthasheaders: = xlYes, Destination: = Rng

  • Efter detta måste vi ge ett namn till denna tabell.

Koda:

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

  • Nedan är den fullständiga koden för din referens.

Koda:

 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 Ställ in Rng = celler (1, 1). Ändra storlek (LR, LC) Dim Ws som kalkylblad Set Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange, xllistobjecthasheaders: = xlYes, Destination: = Rng Ws.ListObjects (1) .name = " EmpTable "End Sub 

Ok, låt oss köra koden och se magin.

Det har skapat tabellen till nämnda data och gett tabellnamnet som “EmpTable” .

Formatera Excel-tabeller med VBA ListObjects

När Excel-tabellen har skapats kan vi arbeta med tabeller med hjälp av vba ListObject-samlingen.

  • Definiera först variabeln som “ListObject”.

Koda:

 Sub List_Objects_Example2 () Dim MyTable As ListObject End Sub 

  • Ställ nu in referensen till denna variabel med hjälp av tabellnamnet.

Koda:

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

Nu innehåller variabeln “MyTable” referensen för tabellen “EmpTable”.

  • Ange variabelnamnet och sätt en punkt för att se egenskaperna och metoderna för VBA ListObject.

Om vi ​​till exempel vill välja hela tabellen måste vi använda objektet "Range" och under detta måste vi använda "Select" -metoden.

Koda:

MyTable.Range.Select

Detta skulle välja hela datatabellen inklusive rubriken.

  • Om du bara vill välja innehållet i tabellen utan rubriker måste vi använda “DataBodyRange”.

Koda:

MyTable.DataBodyRange.Select

Så här kan vi leka med bord.

  • 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.