Čo sú ListObjects vo VBA?
V tabuľke je zvyčajne to, čo vidíme, množina údajov, ale v terminológii VBA existuje oveľa viac, napríklad rozsah celkového rozsahu zoznamov údajov, stĺpec je známy ako stĺpec zoznamu a riadok je známy ako riadok zoznamu atď. , takže na prístup k týmto vlastnostiam máme vstavanú funkciu známu ako Listobjects a ktorá sa používa s funkciou listu.
VBA ListObject je spôsob odkazovania na tabuľky programu Excel pri písaní kódu VBA. Použitím VBA LISTOBJECTS môžeme vytvárať, mazať tabuľky a úplne sa dokážeme pohrať s tabuľkami Excel v kóde VBA. Tabuľky programu Excel sú zložité, začiatočníci a pre používateľov na strednej úrovni je pre prácu s tabuľkami dokonca ťažké. Pretože tento článok hovorí o odkazovaní na tabuľky programu Excel v kódovaní VBA, je lepšie, aby ste mali dobré znalosti o tabuľkách v programe Excel.
Keď sa údaje prevedú do tabuliek, už nebudeme pracovať s rozsahom buniek. Skôr musíme pracovať s rozsahmi tabuliek, takže v tomto článku si ukážeme, ako pracovať s tabuľkami programu Excel a efektívne písať kódy VBA.

Vytvorte formát tabuľky pomocou ListObjects v programe Excel VBA
Napríklad sa pozrite na nižšie uvedené údaje programu Excel.

Pomocou kódu VBA ListObject vytvoríme pre tieto údaje formát tabuľky.
- Pre tieto dáta najskôr musíme zistiť, aký je naposledy použitý riadok a stĺpec, takže nájdite tieto dve premenné.
Kód:
Sub List_Objects_Example1 () Dim LR as Long Dim LC as Long End Sub

- Na vyhľadanie posledného použitého riadku a stĺpca použite nasledujúci kód.
Kód:
LR = bunky (riadky, počet, 1). Koniec (xlUp). Riadok LC = bunky (1, stĺpce. Počet). Koniec (xlToLeft). Stĺpec

- Teraz definujte jednu ďalšiu premennú na uchovanie referencie údajov.
Kód:
Dim Rng As Range

- Teraz nastavte odkaz na túto premennú pomocou nižšie uvedeného kódu.
Kód:
Set Rng = Cells (1, 1). Resize (LR, LC)

Teraz musíme na vytvorenie tabuľky použiť metódu VBA „ListObject.Add“ a nižšie je uvedená jej syntax.
ListObject.Add (zdroj, XlListObjectHasHeaders, cieľ, TableStyleName)
Zdroj: Toto nie je nič, pre aký rozsah buniek vkladáme tabuľku. Môžeme sem teda dodať dva argumenty, tj. „XlSrcRange“ a „xlSrcExternal“.
XlListObjectHasHeaders: Ak tabuľka vkladajúca údaje má alebo nemá hlavičky. Ak áno, môžeme poskytnúť „xlÁno.“ Ak nie, môžeme poskytnúť „xlNo.“
Cieľ: Toto nie je nič iné ako náš rozsah údajov.
Štýl tabuľky: Ak chcete použiť akýkoľvek štýl tabuľky, môžeme poskytnúť štýly.
- Dobre, teraz v aktívnom hárku vytvárame tabuľku, takže nasledujúci kód by vytvoril tabuľku pre nás.
Kód:
Dim Ws As Worksheet Set Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange, xllistobjecthasheaders: = xlYes, Destination: = Rng

- Potom musíme tejto tabuľke pomenovať.
Kód:
Ws.ListObjects (1) .name = "EmpTable"

- Ďalej je uvedený úplný kód pre vašu referenciu.
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 = " Prázdna tabuľka
Dobre, spustíme kód a uvidíme kúzlo.

Vytvorila tabuľku k uvedeným údajom a dala jej názov „EmpTable“.
Formátovanie tabuliek Excel pomocou VBA ListObjects
Po vytvorení tabuľky programu Excel môžeme s tabuľkami pracovať pomocou kolekcie VBA ListObject.
- Najskôr definujte premennú ako „ListObject“.
Kód:
Sub List_Objects_Example2 () Dim MyTable ako ListObject End Sub

- Teraz nastavte odkaz na túto premennú pomocou názvu tabuľky.
Kód:
Sub List_Objects_Example2 () Dim MyTable As ListObject Set MyTable = ActiveSheet.ListObjects ("EmpTable") End Sub

Premenná „MyTable“ teraz obsahuje referenciu pre tabuľku „EmpTable“.
- Zadajte názov premennej a vložte bodku, aby ste videli vlastnosti a metódy VBA ListObject.

Napríklad, ak chceme vybrať celú tabuľku, musíme použiť objekt „Range“ a pod ním musíme použiť metódu „Select“.
Kód:
MyTable.Range. Vyberte

Týmto by sa vybrala celá tabuľka údajov vrátane nadpisu.
- Ak chcete vybrať iba obsah tabuľky bez hlavičiek, musíme použiť program „DataBodyRange“.
Kód:
MyTable.DataBodyRange.Select

Takto sa môžeme hrať so stolmi.
- Nižšie je uvedený zoznam kódov aktivít pre vašu referenciu.
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 riadky hlavičky tabuľky MyTable.ListColumns (2). Range. Vyberte „Ak chcete vybrať stĺpec 2 vrátane hlavičky MyTable.ListColumns (2) .DataBodyRange. Vyberte„ Ak chcete vybrať stĺpec 2 bez hlavičky End Sub.
Takto môžeme použiť kolekciu „ListObject“ na pohrávanie sa s tabuľkami programu Excel.
Na čo treba pamätať
- VBA ListObject je kolekcia objektov, ktoré odkazujú na tabuľky programu Excel.
- Ak chcete najskôr získať prístup do kolekcie ListObject, musíme určiť, na ktorý pracovný hárok máme na mysli.