VBA ListObjects | Vejledning til ListObject Excel-tabeller i Excel VBA

Hvad er ListObjects i VBA?

I en tabel er det normalt et datasæt, men i VBA-terminologi er der meget mere, da der er rækkevidde for det samlede datalisteområde, kolonnen er kendt som listekolonnen, og rækken er kendt som listerækken osv , så for at få adgang til disse egenskaber har vi en indbygget funktion kendt som Listobjects, og som bruges sammen med regnearkfunktionen.

VBA ListObject er en måde at henvise til excel-tabellerne, mens du skriver VBA-koden. Ved at bruge VBA LISTOBJECTS kan vi oprette, slette tabel, og helt kan vi lege med excel-tabeller i VBA-kode. Excel-tabeller er vanskelige, begyndere og endda i et omfang mellemniveaubrugere har svært ved at arbejde med tabeller. Da denne artikel taler om henvisning til excel-tabeller i VBA-kodning, er det bedre, at du har god viden om tabeller i excel.

Når dataene konverteres til tabeller, arbejder vi ikke længere med en række celler, men vi skal arbejde med tabelområder, så i denne artikel viser vi dig, hvordan du arbejder med excel-tabeller for at skrive VBA-koder effektivt.

Opret tabelformat ved hjælp af ListObjects i Excel VBA

Se f.eks. Nedenstående excel-data.

Ved hjælp af VBA ListObject-kode opretter vi et tabelformat til disse data.

Du kan downloade denne VBA ListObjects Excel-skabelon her - VBA ListObjects Excel-skabelon
  • For disse data skal vi først finde ud af, hvad der er den sidst anvendte række & kolonne, så definer to variabler for at finde dette.

Kode:

 Underliste_Objekter_eksempel1 () Dim LR så lang Dim LC som lang ende Sub 

  • Brug nedenstående kode for at finde den sidst anvendte række og kolonne.

Kode:

LR = Celler (Rækker.Tælling, 1) .End (xlUp) .Række LC = Celler (1, Kolonner.Tælling) .End (xlToLeft) .Kolonne

  • Definer nu en yderligere variabel, der indeholder referencen til dataene.

Kode:

 Dæmp Rng som rækkevidde 

  • Indstil nu henvisningen til denne variabel ved hjælp af nedenstående kode.

Kode:

 Indstil Rng = celler (1, 1). Størrelse (LR, LC)

Nu skal vi bruge VBA "ListObject.Add" -metoden til at oprette en tabel, og nedenunder er syntaksen for den samme.

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

Kilde: Dette er intet for hvilket celleområde vi indsætter tabellen. Så vi kan angive to argumenter her, dvs. “xlSrcRange” og “xlSrcExternal”.

XlListObjectHasHeaders: Hvis tabellen, der indsætter data, har overskrifter eller ej. Hvis ja, kan vi give “xlYes” hvis ikke, kan vi give “xlNo”.

Destination: Dette er intet andet end vores dataområde.

Tabelstil: Hvis du vil anvende en hvilken som helst tabelstil, kan vi levere typografier.

  • Ok, nu i det aktive ark opretter vi tabellen, så nedenstående kode vil oprette en tabel for os.

Kode:

 Dæmp Ws som regneark Sæt Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange, xllistobjecthasheaders: = xlYes, Destination: = Rng

  • Efter dette er vi nødt til at give et navn til denne tabel.

Kode:

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

  • Nedenfor er den fulde kode til din reference.

Kode:

 Underliste_objekter_eksempel1 () Dim LR så lang Dim LC som lang LR = celler (rækker.Tælling, 1) .End (xlUp). Række LC = celler (1, kolonner.Tælling) .End (xlToLeft) .Kolonne dim Rng som område Indstil Rng = Celler (1, 1). Størrelse (LR, LC) Dim Ws som regneark Sæt Ws = ActiveSheet Ws.ListObjects.Tilføj xlSrcRange, xllistobjecthasheaders: = xlJa, Destination: = Rng Ws.ListObjects (1) .name = " EmpTable "End Sub 

Ok, lad os køre koden og se magien.

Det har oprettet tabellen til de nævnte data og givet tabelnavnet som “EmpTable” .

Formatering af Excel-tabeller med VBA ListObjects

Når Excel-tabellen er oprettet, kan vi arbejde med tabeller ved hjælp af vba ListObject-samlingen.

  • Definér først variablen som “ListObject”.

Kode:

 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.