VBA ListObjects - Guide till ListObject Excel-tabeller i Excel VBA

Innehållsförteckning

Vad är ListObjects i VBA?

I en tabell är det normalt sett en datauppsättning 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 viss utsträckning har medelnivåanvändare svårt att arbeta med tabeller. Eftersom den här artikeln talar om att referera till exceltabeller 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. Vi måste snarare arbeta med tabellområden, 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-koden skapar vi ett tabellformat för dessa data.

  • 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). 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 använda någon bordsstil kan vi tillhandahålla format.

  • Ok, nu i det aktiva arket skapar vi tabellen, så koden nedan skulle 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
  • 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.

  • Nedan är listan över aktivitetskoder som referens.

Koda:

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 Välj rubrikrader för tabell MyTable.ListColumn (2) .Range.Select 'För att välja kolumn 2 inklusive rubrik MyTable.ListColumn (2) .DataBodyRange.Select' För att välja kolumn 2 utan rubrik End Sub

Så här kan vi använda samlingen "ListObject" för att leka med excel-tabeller.

Saker att komma ihåg

  • VBA ListObject är samlingen av objekt som refererar till Excel-tabeller.
  • För att komma åt ListObject-samlingen först måste vi ange vilket kalkylblad vi hänvisar till är.

Intressanta artiklar...