Objekti seznama VBA | Vodnik po seznam tabel Excel Excel v Excelu VBA

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 na srednji ravni 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 delamo več z vrsto celic, temveč moramo delati s obsegi tabel, zato vam bomo v tem članku pokazali, kako lahko s tabelami excel učinkovito pišete kode VBA.

Ustvari obliko tabele z uporabo ListObjects v Excelu VBA

Na primer, poglejte spodnje podatke excel.

Z uporabo kode VBA ListObject bomo ustvarili obliko tabele za te podatke.

To predlogo VBA ListObjects Excel lahko prenesete tukaj - Predloga VBA ListObjects Excel
  • Za te podatke moramo najprej najti, katera je zadnja uporabljena vrstica in stolpec, zato določimo dve spremenljivki, da to najdemo.

Koda:

 Sub List_Objects_Example1 () Dim LR As Long Dim LC As Long End Sub 

  • 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

  • Zdaj definirajte še eno spremenljivko, ki bo vsebovala sklic na podatke.

Koda:

 Dim Rng As Range 

  • Zdaj nastavite sklic na to spremenljivko z uporabo spodnje kode.

Koda:

 Nastavite Rng = Celice (1, 1) .Resize (LR, LC)

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 da, lahko navedemo "xlYes", če ne, lahko navedemo "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

  • Po tem moramo tej tabeli dati ime.

Koda:

Ws.ListObjects (1) .name = "EmpTable"

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

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 

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