Što su ListObjects u VBA?
U tablici obično vidimo skup podataka, ali u terminologiji VBA postoji mnogo više takvih kao što je raspon 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-a možemo stvarati, brisati tablice i u potpunosti se igrati s excel tablicama u VBA kodu. Excel tablice su nezgodne, 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. Umjesto toga, moramo raditi s rasponima tablica, pa ćemo vam u ovom članku pokazati kako raditi s excel tablicama za učinkovito pisanje VBA kodova.
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba.png.webp)
Stvorite format tablice pomoću ListObjects u programu Excel VBA
Na primjer, pogledajte dolje navedene podatke o excelu.
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_2.png.webp)
Korištenjem VBA ListObject koda stvorit ćemo format tablice za ove podatke.
- 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
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_3.png.webp)
- Da biste pronašli zadnji korišteni redak i stupac, upotrijebite donji kod.
Kodirati:
LR = ćelije (retci.broj, 1). Završetak (xlUp). Red LC = ćelije (1, stupci.broj). Završetak (xlToLeft). Stupac
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_4.png.webp)
- Sada definirajte još jednu varijablu koja će sadržavati referencu podataka.
Kodirati:
Dim Rng As Range
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_5.png.webp)
- Sada postavite referencu na ovu varijablu pomoću donjeg koda.
Kodirati:
Postavite Rng = stanice (1, 1). Veličina (LR, LC)
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_6.png.webp)
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 dati "xlYes". Ako ne, možemo navesti "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, tako da bi donji kod stvorio tablicu za nas.
Kodirati:
Dim Ws As Worksheet Set Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange, xllistobjecthasheaders: = xlYes, Destination: = Rng
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_7.png.webp)
- Nakon ovoga, ovoj tablici moramo dati ime.
Kodirati:
Ws.ListObjects (1) .name = "EmpTable"
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_8.png.webp)
- Ispod je cjeloviti kod za vašu referencu.
Kodirati:
Sublist_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.
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_9.png.webp)
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
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_10.png.webp)
- 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
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_11.png.webp)
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.
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_12.png.webp)
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
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_13.png.webp)
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
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_14.png.webp)
Like this, we can play around with tables.
- Ispod je popis kodova aktivnosti za vašu referencu.
Kodirati:
Sub List_Objects_Example2 () Zatamni MyTable kao ListObject Set MyTable = ActiveSheet.ListObjects ("EmpTable") MyTable.DataBodyRange.Select 'Za odabir raspona podataka bez zaglavlja MyTable.Range.Select' Za odabir raspona podataka sa zaglavljima MyTable.HeaderRightRowRave. Odaberite retke zaglavlja tablice MyTable.ListColumns (2) .Range.Select 'Za odabir stupca 2 uključujući zaglavlje MyTable.ListColumns (2) .DataBodyRange.Select' Za odabir stupca 2 bez zaglavlja End Sub
Ovako, možemo se koristiti kolekcijom "ListObject" za poigravanje s excel tablicama.
Stvari koje treba zapamtiti
- VBA ListObject je zbirka objekata koji upućuju na Excel tablice.
- Da bismo prvo pristupili zbirci ListObject, moramo navesti koji je radni list na koji se pozivamo.