Zoznam objektov VBA | Sprievodca tabuľkami Excel ListObject v programe Excel VBA

Č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. Pomocou VBA LISTOBJECTS môžeme vytvárať, mazať tabuľky a úplne sa dokážeme pohrať s tabuľkami programu Excel v kóde VBA. Tabuľky programu Excel sú zložité, začiatočníci a dokonca pre používateľov na strednej úrovni je ťažké pracovať s tabuľkami. 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 prevádzajú do tabuliek, už nepracujeme s rozsahom buniek, ale skôr musíme pracovať s rozsahmi tabuliek, takže si v tomto článku 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 tabuľkový formát pre tieto údaje.

Túto šablónu VBA ListObjects Excel si môžete stiahnuť tu - Šablóna VBA ListObjects Excel
  • Pre tieto dáta najskôr musíme zistiť, čo je posledný použitý riadok a stĺpec, takže definujte dve premenné, aby ste ich našli.

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 jej rovnaká 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 uviesť „xlAno“, ak nie, môžeme uviesť „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 nám vytvoril tabuľku.

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 As ListObject End Sub 

  • 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 

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.

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

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

Like this, we can play around with tables.

  • Below is the list of activity codes for your reference.

Code:

 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 Select table header rows MyTable.ListColumns(2).Range.Select 'To select column 2 including header MyTable.ListColumns(2).DataBodyRange.Select 'To select column 2 without header End Sub 

Like this, we can use the “ListObject” collection to play around with excel tables.

Things to Remember

  • VBA ListObject is the collection of objects to reference excel tables.
  • To access ListObject collection first we need to specify what worksheet we are referring to is.