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.

Vytvořte formát tabulky pomocí ListObjects v aplikaci Excel VBA
Podívejte se například na níže uvedená data aplikace Excel.

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

- 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

- Nyní definujte ještě jednu proměnnou pro uchování odkazu na data.
Kód:
Dim Rng As Range

- Nyní nastavte odkaz na tuto proměnnou pomocí níže uvedeného kódu.
Kód:
Set Rng = Cells (1, 1). Resize (LR, LC)

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

- Poté musíme této tabulce dát název.
Kód:
Ws.ListObjects (1) .name = "EmpTable"

- 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.

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

- 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

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.

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

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

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.