VBA ListObjects | Ghid pentru tabelele ListObject Excel în Excel VBA

Ce sunt ListObjects în VBA?

Într-un tabel, în mod normal, ceea ce vedem este un set de date, dar în terminologia VBA există mult mai multe, de exemplu, există un interval al listei totale de date, coloana este cunoscută sub numele de coloană listă și rândul este cunoscut ca rândul listei și așa mai departe , deci pentru a accesa aceste proprietăți avem o funcție încorporată cunoscută sub numele de Listobjects și care este utilizată cu funcția de foaie de lucru.

VBA ListObject este un mod de a face referire la tabelele Excel în timp ce scrieți codul VBA. Prin utilizarea VBA LISTOBJECTS putem crea, șterge tabelul și în totalitate ne putem juca cu tabele Excel în codul VBA. Tabelele Excel sunt dificile, începători și chiar într-o măsură, utilizatorii de nivel mediu au dificultăți în a lucra cu tabelele. Deoarece acest articol vorbește despre referințarea tabelelor Excel în codificarea VBA, este mai bine să aveți cunoștințe bune despre tabelele în Excel.

Când datele sunt convertite în tabele, nu mai lucrăm cu o gamă de celule, ci trebuie să lucrăm cu intervale de tabele, așa că în acest articol vă vom arăta cum să lucrați cu tabele Excel pentru a scrie coduri VBA în mod eficient.

Creați formatul tabelului utilizând ListObjects în Excel VBA

De exemplu, uitați-vă la datele Excel de mai jos.

Folosind codul VBA ListObject vom crea un format de tabel pentru aceste date.

Puteți descărca acest șablon Excel VBA ListObjects aici - Șablon Excel VBA ListObjects
  • Pentru aceste date mai întâi trebuie să găsim care este ultimul rând și coloană utilizate, deci definiți două variabile pentru a găsi acest lucru.

Cod:

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

  • Pentru a găsi ultimul rând și coloană folosite, folosiți codul de mai jos.

Cod:

LR = Celule (Rânduri. Număr, 1). Final (xlUp). Rând LC = Celule (1, Coloane. Număr) .End (xlToLeft). Coloană

  • Acum definiți încă o variabilă pentru a menține referința datelor.

Cod:

 Dim Rng As Range 

  • Acum setați referința la această variabilă utilizând codul de mai jos.

Cod:

 Setați Rng = Celule (1, 1). Redimensionați (LR, LC)

Acum trebuie să folosim metoda VBA „ListObject.Add” pentru a crea un tabel și mai jos este sintaxa aceluiași.

ListObject.Add (Source, XlListObjectHasHeaders, Destination, TableStyleName)

Sursă: nu este nimic pentru care gamă de celule inserăm tabelul. Deci putem furniza două argumente aici, adică „xlSrcRange” și „xlSrcExternal”.

XlListObjectHasHeaders: Dacă tabelul care introduce date are anteturi sau nu. Dacă da, putem oferi „xlYes”, dacă nu, putem furniza „xlNo”.

Destinație: Aceasta nu este altceva decât gama noastră de date.

Stil de masă: dacă doriți să aplicați orice stil de masă, vă putem oferi stiluri.

  • Ok, acum în foaia activă creăm tabelul, deci codul de mai jos ne-ar crea un tabel.

Cod:

 Dim Ws ca set de foi de lucru Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange, xllistobjecthasheaders: = xlYes, Destinație: = Rng

  • După aceasta, trebuie să dăm un nume acestui tabel.

Cod:

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

  • Mai jos este codul complet pentru referință.

Cod:

 Sub List_Objects_Example1 () Dim LR As Long Dim LC Long As LR = Celule (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 Ca foaie de lucru Set Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange, xllistobjecthasheaders: = xlYes, Destination: = Rng Ws.ListObjects (1) .name = " EmpTable "End Sub 

Ok, hai să rulăm codul și să vedem magia.

Acesta a creat tabelul pentru datele menționate și a dat numele tabelei ca „EmpTable” .

Formatarea tabelelor Excel cu VBA ListObjects

Odată ce tabelul Excel a fost creat, putem lucra cu tabele folosind colecția vba ListObject.

  • Mai întâi, definiți variabila ca „ListObject”.

Cod:

 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.