Co jsou ListObjects ve VBA?
V tabulce je obvykle to, co vidíme, datová sada, ale v terminologii VBA existuje mnohem více, protože existuje rozsah celkového rozsahu seznamu dat, sloupec je známý jako sloupec seznamu a řádek je známý jako řádek seznamu atd. , abychom měli přístup k těmto vlastnostem, máme vestavěnou funkci známou jako Listobjects a která se používá s funkcí listu.
VBA ListObject je způsob odkazování na tabulky aplikace Excel při psaní kódu VBA. Pomocí VBA LISTOBJECTS můžeme vytvářet, mazat tabulky a úplně si můžeme hrát s tabulkami Excel v kódu VBA. Tabulky aplikace Excel jsou složité, začátečníci a pro uživatele na střední úrovni je práce s tabulkami obtížná. Protože tento článek hovoří o odkazování na tabulky Excel v kódování VBA, je lepší, abyste měli dobré znalosti o tabulkách v aplikaci Excel.
Když jsou data převedena do tabulek, již nepracujeme s řadou buněk. Spíše musíme pracovat s rozsahy tabulek, takže v tomto článku vám ukážeme, jak pracovat s tabulkami aplikace Excel a efektivně psát kódy VBA.
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba.png.webp)
Vytvořte formát tabulky pomocí ListObjects v aplikaci Excel VBA
Podívejte se například na níže uvedená data aplikace Excel.
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_2.png.webp)
Pomocí kódu VBA ListObject vytvoříme formát tabulky pro tato data.
- Pro tato data nejprve musíme zjistit, co je poslední použitý řádek a sloupec, takže definujte dvě proměnné, abyste to našli.
Kód:
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)
- Chcete-li najít poslední použitý řádek a sloupec, použijte níže uvedený kód.
Kód:
LR = Cells (Rows.Count, 1) .End (xlUp) .Row LC = Cells (1, Columns.Count) .End (xlToLeft) .Column
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_4.png.webp)
- Nyní definujte ještě jednu proměnnou pro uchování odkazu na data.
Kód:
Dim Rng As Range
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_5.png.webp)
- Nyní nastavte odkaz na tuto proměnnou pomocí níže uvedeného kódu.
Kód:
Set Rng = Cells (1, 1). Resize (LR, LC)
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_6.png.webp)
Nyní musíme k vytvoření tabulky použít metodu VBA „ListObject.Add“ a níže je uvedena její syntaxe.
ListObject.Add (Source, XlListObjectHasHeaders, Destination, TableStyleName)
Zdroj: To není nic, pro jaký rozsah buněk vkládáme tabulku. Můžeme zde tedy zadat dva argumenty, tj. „XlSrcRange“ a „xlSrcExternal“.
XlListObjectHasHeaders: Pokud má tabulka vkládající data záhlaví nebo ne. Pokud ano, můžeme poskytnout „xlAno.“ Pokud ne, můžeme poskytnout „xlNo.“
Cíl: Toto není nic jiného než náš rozsah dat.
Styl tabulky: Pokud chcete použít jakýkoli styl tabulky, můžeme poskytnout styly.
- Dobře, nyní v aktivním listu vytváříme tabulku, takže níže uvedený kód by vytvořil tabulku pro nás.
Kód:
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)
- Poté musíme této tabulce dát název.
Kód:
Ws.ListObjects (1) .name = "EmpTable"
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_8.png.webp)
- Níže je uveden úplný kód pro vaši referenci.
Kód:
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 Set Rng = Cells (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
Dobře, spustíme kód a uvidíme kouzlo.
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_9.png.webp)
Vytvořila tabulku podle zmíněných dat a pojmenovala ji jako „EmpTable“.
Formátování tabulek aplikace Excel pomocí VBA ListObjects
Po vytvoření tabulky aplikace Excel můžeme s tabulkami pracovat pomocí kolekce VBA ListObject.
- Nejprve definujte proměnnou jako „ListObject“.
Kód:
Sub List_Objects_Example2 () Dim MyTable jako ListObject End Sub
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_10.png.webp)
- Nyní nastavte odkaz na tuto proměnnou pomocí názvu tabulky.
Kód:
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)
Proměnná „MyTable“ nyní obsahuje odkaz pro tabulku „EmpTable“.
- Zadejte název proměnné a vložte tečku, abyste viděli vlastnosti a metody VBA ListObject.
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_12.png.webp)
Například pokud chceme vybrat celou tabulku, musíme použít objekt „Range“ a pod tím musíme použít metodu „Select“.
Kód:
MyTable.Range.Select
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_13.png.webp)
Tím by se vybrala celá tabulka dat, včetně záhlaví.
- Pokud chcete vybrat pouze obsah tabulky bez záhlaví, musíme použít „DataBodyRange“.
Kód:
MyTable.DataBodyRange.Select
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_14.png.webp)
Takto si můžeme hrát se stoly.
- Níže je uveden seznam kódů aktivit pro vaši referenci.
Kód:
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 Vyberte řádky záhlaví tabulky MyTable.ListColumns (2) .Range.Select 'Chcete-li vybrat sloupec 2 včetně záhlaví MyTable.ListColumns (2) .DataBodyRange.Select' Chcete-li vybrat sloupec 2 bez záhlaví End Sub
Takto můžeme použít kolekci „ListObject“ k hraní s tabulkami aplikace Excel.
Věci k zapamatování
- VBA ListObject je kolekce objektů, které odkazují na tabulky aplikace Excel.
- Chcete-li nejprve získat přístup k kolekci ListObject, musíme určit, na který list odkazujeme.