Kaj so ListObjects v VBA?
V tabeli običajno vidimo nabor podatkov, vendar je v terminologiji VBA veliko več, na primer obseg celotnega obsega seznama podatkov, stolpec je znan kot stolpec seznama, vrstica pa vrstica seznama itd. , zato imamo za dostop do teh lastnosti vgrajeno funkcijo, znano kot Listobjects, ki se uporablja s funkcijo delovnega lista.
VBA ListObject je način sklicevanja na tabele excel med pisanjem kode VBA. Z uporabo VBA LISTOBJECTS lahko ustvarjamo, brišemo tabele in se v celoti lahko igramo z excel tabelami v kodi VBA. Excel tabele so zapletene, začetniki in celo do neke mere uporabniki srednjih stopenj težko delajo s tabelami. Ker ta članek govori o sklicevanju na tabele excel v kodiranju VBA, je bolje, da dobro poznate tabele v excelu.
Ko se podatki pretvorijo v tabele, ne delujemo več z vrsto celic. Namesto tega moramo delati z obsegi tabel, zato vam bomo v tem članku pokazali, kako delati z excel tabelami za učinkovito pisanje kod VBA.
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba.png.webp)
Ustvari obliko tabele z uporabo ListObjects v Excelu VBA
Na primer, poglejte spodnje podatke excel.
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_2.png.webp)
Z uporabo kode VBA ListObject bomo za te podatke ustvarili obliko tabele.
- Za te podatke moramo najprej najti, katera je zadnja uporabljena vrstica in stolpec, zato določite dve spremenljivki, da to najdete.
Koda:
Sub List_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)
- Za iskanje zadnje uporabljene vrstice in stolpca uporabite spodnjo kodo.
Koda:
LR = celice (vrstice. Število, 1). Konec (xlUp). Vrstica LC = celice (1, stolpci. Število). Konec (xlToLeft). Stolpec
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_4.png.webp)
- Zdaj določite še eno spremenljivko, ki bo vsebovala sklic na podatke.
Koda:
Dim Rng As Range
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_5.png.webp)
- Zdaj nastavite sklic na to spremenljivko z uporabo spodnje kode.
Koda:
Nastavite Rng = Celice (1, 1) .Resize (LR, LC)
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_6.png.webp)
Zdaj moramo za izdelavo tabele uporabiti metodo VBA “ListObject.Add”, spodaj pa je sintaksa iste.
ListObject.Add (Source, XlListObjectHasHeaders, Destination, TableStyleName)
Vir: To ni nič, za kateri obseg celic vstavljamo tabelo. Tu lahko navedemo dva argumenta, tj. "XlSrcRange" in "xlSrcExternal."
XlListObjectHasHeaders: Če ima tabela, ki vstavlja podatke, glave ali ne. Če je odgovor pritrdilen, lahko navedemo "xlYes." V nasprotnem primeru lahko zagotovimo "xlNo."
Cilj: To ni nič drugega kot naš obseg podatkov.
Slog tabele: če želite uporabiti kateri koli slog tabele, lahko ponudimo sloge.
- Ok, zdaj v aktivnem listu ustvarjamo tabelo, zato bi spodnja koda ustvarila tabelo za nas.
Koda:
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)
- Po tem moramo tej tabeli dati ime.
Koda:
Ws.ListObjects (1) .name = "EmpTable"
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_8.png.webp)
- Spodaj je celotna koda za referenco.
Koda:
Sub List_Objects_Example1 () Dim LR As Long Dim LC As Long LR = Celice (Rows.Count, 1) .End (xlUp) .Red LC = Celice (1, Columns.Count) .End (xlToLeft) .Column Dim Rng As Range Nastavite Rng = Celice (1,1) .Resize (LR, LC) Dim Ws As Worksheet Set Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange, xllistobjecthasheaders: = xlYes, Destination: = Rng Ws.ListObjects (1) .name = " EmpTable "End Sub
Ok, zaženimo kodo in si oglejmo čarovnijo.
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_9.png.webp)
Ustvaril je tabelo za omenjene podatke in ji dal ime tabele kot »EmpTable«.
Oblikovanje Excelovih tabel z VBA ListObjects
Ko je tabela Excel ustvarjena, lahko s tabelami delamo s pomočjo zbirke VBA ListObject.
- Najprej spremenljivko definirajte kot »ListObject«.
Koda:
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.
- Spodaj je seznam kod dejavnosti za vašo referenco.
Koda:
Sub List_Objects_Example2 () Dim MyTable As ListObject Set MyTable = ActiveSheet.ListObjects ("EmpTable") MyTable.DataBodyRange. Izberite vrstice naslovov tabele MyTable.ListColumns (2) .Range.Select 'Če želite izbrati stolpec 2, vključno z glavo MyTable.ListColumns (2) .DataBodyRange.Select' Za izbiro stolpca 2 brez glave End Sub
Tako lahko tudi mi uporabljamo zbirko "ListObject" za poigravanje z excel tabelami.
Stvari, ki si jih je treba zapomniti
- VBA ListObject je zbirka predmetov, ki se sklicujejo na tabele excel.
- Za prvi dostop do zbirke ListObject moramo določiti, na kateri delovni list se sklicujemo.