VBA ListObjects

Wat zijn ListObjects in VBA?

In een tabel zien we normaal gesproken een dataset, maar in VBA-terminologie zijn er veel meer, zoals een bereik van het totale datalijstbereik, de kolom staat bekend als de lijstkolom en rij staat bekend als de lijstrij enzovoort , dus om toegang te krijgen tot deze eigenschappen hebben we een ingebouwde functie die bekend staat als Listobjects en die wordt gebruikt met de werkbladfunctie.

VBA ListObject is een manier om naar de Excel-tabellen te verwijzen tijdens het schrijven van de VBA-code. Door VBA LISTOBJECTS te gebruiken, kunnen we een tabel maken, verwijderen en volledig spelen met Excel-tabellen in VBA-code. Excel-tabellen zijn lastig, beginners en zelfs gebruikers van gemiddeld niveau vinden het moeilijk om met tabellen te werken. Aangezien in dit artikel wordt gesproken over het verwijzen naar Excel-tabellen in VBA-codering, is het beter dat u een goede kennis heeft over tabellen in Excel.

Wanneer de gegevens worden geconverteerd naar tabellen, werken we niet langer met een celbereik, maar moeten we met tabelbereiken werken, dus in dit artikel laten we u zien hoe u met Excel-tabellen kunt werken om VBA-codes efficiënt te schrijven.

Maak een tabelindeling met ListObjects in Excel VBA

Bekijk bijvoorbeeld de onderstaande Excel-gegevens.

Met behulp van VBA ListObject-code zullen we een tabelindeling voor deze gegevens maken.

U kunt deze VBA ListObjects Excel-sjabloon hier downloaden - VBA ListObjects Excel-sjabloon
  • Voor deze gegevens moeten we eerst vinden wat de laatst gebruikte rij en kolom is, dus definieer twee variabelen om dit te vinden.

Code:

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

  • Gebruik de onderstaande code om de laatst gebruikte rij en kolom te vinden.

Code:

LR = Cells (Rows.Count, 1) .End (xlUp) .Row LC = Cells (1, Columns.Count) .End (xlToLeft) .Column

  • Definieer nu nog een variabele om de referentie van de gegevens vast te houden.

Code:

 Dim Rng als bereik 

  • Stel nu de verwijzing naar deze variabele in met behulp van de onderstaande code.

Code:

 Stel Rng = Cellen (1, 1) in. Formaat (LR, LC)

Nu moeten we de VBA "ListObject.Add" -methode gebruiken om een ​​tabel te maken en hieronder is de syntaxis hiervan.

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

Bron: dit is niets voor welk celbereik we de tabel invoegen. We kunnen hier dus twee argumenten opgeven , namelijk “xlSrcRange” en “xlSrcExternal”.

XlListObjectHasHeaders: als de tabel waarin gegevens worden ingevoegd kopteksten heeft of niet. Zo ja, dan kunnen we "xlYes" verstrekken, zo niet, dan kunnen we "xlNo" verstrekken.

Bestemming: dit is niets anders dan ons gegevensbereik.

Tafelstijl: Als u een willekeurige tafelstijl wilt toepassen, kunnen we stijlen leveren.

  • Ok, nu in het actieve blad maken we de tabel, dus onderstaande code zou een tabel voor ons maken.

Code:

 Dim Ws As Worksheet Set Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange, xllistobjecthasheaders: = xlYes, Destination: = Rng

  • Hierna moeten we deze tabel een naam geven.

Code:

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

  • Hieronder vindt u de volledige code ter referentie.

Code:

 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 

Oké, laten we de code uitvoeren en de magie zien.

Het heeft de tabel gemaakt met de genoemde gegevens en de tabelnaam gegeven als "EmpTable" .

Excel-tabellen opmaken met VBA ListObjects

Nadat de Excel-tabel is gemaakt, kunnen we met tabellen werken met behulp van vba ListObject-verzameling.

  • Definieer eerst de variabele als "ListObject".

Code:

 Sub List_Objects_Example2 () Dim MyTable As ListObject End Sub 

  • Stel nu de verwijzing naar deze variabele in met behulp van de tabelnaam.

Code:

 Sub List_Objects_Example2 () Dim MyTable As ListObject Set MyTable = ActiveSheet.ListObjects ("EmpTable") End Sub 

Nu bevat de variabele "MyTable" de referentie voor de tabel "EmpTable".

  • Voer de variabelenaam in en plaats een punt om de eigenschappen en methoden van het VBA ListObject te zien.

Als we bijvoorbeeld de hele tabel willen selecteren, moeten we het "Range" -object gebruiken en daaronder moeten we de "Select" -methode gebruiken.

Code:

MyTable.Range.Select

Dit zou de volledige gegevenstabel inclusief de kop selecteren.

  • Als u alleen de inhoud van de tabel zonder headers wilt selecteren, moeten we "DataBodyRange" gebruiken.

Code:

MyTable.DataBodyRange.Select

Zo kunnen we spelen met tafels.

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