VBA ListObjects | Vodič za ListObject Excel tablice u programu Excel VBA

Što su ListObjects u VBA?

U tablici obično vidimo skup podataka, ali u terminologiji VBA postoji mnogo više takvih kao što je opseg ukupnog raspona popisa podataka, stupac je poznat kao stupac popisa, a redak poznat kao redak popisa itd. , tako da za pristup ovim svojstvima imamo ugrađenu funkciju poznatu kao Listobjects i koja se koristi s funkcijom radnog lista.

VBA ListObject je način pozivanja na excel tablice tijekom pisanja VBA koda. Korištenjem VBA LISTOBJECTS možemo stvarati, brisati tablice i potpuno se igrati s excel tablicama u VBA kodu. Excel tablice su lukave, početnicima, pa čak i donekle korisnicima srednje razine je teško raditi s tablicama. Budući da ovaj članak govori o referenciranju excel tablica u VBA kodiranju, bolje je da imate dobro znanje o tablicama u excelu.

Kad se podaci pretvore u tablice, više ne radimo s nizom ćelija, već trebamo raditi s rasponima tablica, pa ćemo vam u ovom članku pokazati kako raditi s excel tablicama za učinkovito pisanje VBA kodova.

Stvorite format tablice pomoću ListObjects u programu Excel VBA

Na primjer, pogledajte dolje navedene podatke Excel.

Korištenjem VBA ListObject koda stvorit ćemo format tablice za ove podatke.

Ovaj VBA ListObjects Excel predložak možete preuzeti ovdje - VBA ListObjects Excel Predložak
  • Za ove podatke prvo moramo pronaći koji je zadnji korišteni redak i stupac, pa definirajte dvije varijable da biste to pronašli.

Kodirati:

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

  • Da biste pronašli zadnji korišteni redak i stupac, upotrijebite donji kod.

Kodirati:

LR = stanice (retci.broj, 1). Završetak (xlUp). Red LC = stanice (1, stupci.broj). Završetak (xlToLeft). Stupac

  • Sada definirajte još jednu varijablu koja će sadržavati referencu podataka.

Kodirati:

 Dim Rng As Range 

  • Sada postavite referencu na ovu varijablu pomoću donjeg koda.

Kodirati:

 Postavite Rng = stanice (1, 1). Veličina (LR, LC)

Sada moramo koristiti VBA metodu "ListObject.Add" za stvaranje tablice, a ispod je sintaksa iste.

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

Izvor: Ovo nije ništa za koji raspon ćelija ubacujemo tablicu. Dakle, ovdje možemo navesti dva argumenta, tj. „XlSrcRange“ i „xlSrcExternal“.

XlListObjectHasHeaders: Ako tablica koja ubacuje podatke ima zaglavlja ili ne. Ako je odgovor da, možemo navesti "xlYes", ako ne, možemo dati "xlNo".

Odredište: Ovo nije ništa drugo nego naš raspon podataka.

Stil tablice: Ako želite primijeniti bilo koji stil tablice, možemo pružiti stilove.

  • Ok, sada na aktivnom listu stvaramo tablicu, pa bi donji kod stvorio tablicu za nas.

Kodirati:

 Dim Ws As Worksheet Set Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange, xllistobjecthasheaders: = xlYes, Destination: = Rng

  • Nakon ovoga, ovoj tablici moramo dati ime.

Kodirati:

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

  • Ispod je cjeloviti kod za vašu referencu.

Kodirati:

 Sub List_Objects_Example1 () Dim LR Long Long Dim LC As Long LR = Cells (Rows.Count, 1) .End (xlUp) .Red LC = Cells (1, Columns.Count) .End (xlToLeft) .Column Dim Rng As Range Postavi Rng = Ćelije (1, 1) .Veličina (LR, LC) Zatamni Ws Kao radni list Postavi Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange, xllistobjecthasheaders: = xlYes, Odredište: = Rng Ws.ListObjects (1) .name = " EmpTable "Kraj Sub 

Ok, pokrenimo kod i vidimo čaroliju.

Stvorio je tablicu prema spomenutim podacima i dao joj naziv tablice kao "EmpTable" .

Oblikovanje Excel tablica pomoću VBA ListObjects

Jednom kada je kreirana Excel tablica, možemo raditi s tablicama pomoću vba ListObject kolekcije.

  • Prvo definirajte varijablu kao “ListObject”.

Kodirati:

 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.