VBA ListObjects - Gids voor ListObject Excel-tabellen in Excel VBA

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 de 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 tot op zekere hoogte vinden gebruikers van gemiddeld niveau 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 hebt van tabellen in Excel.

Wanneer de gegevens worden geconverteerd naar tabellen, werken we niet langer met een celbereik. We moeten eerder 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 de VBA ListObject-code zullen we een tabelindeling voor deze gegevens maken.

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

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' leveren. Zo niet, dan kunnen we 'xlNo' verstrekken.

Bestemming: dit is niets anders dan ons gegevensbereik.

Tafelstijl: als u een tabelstijl wilt toepassen, kunnen we stijlen leveren.

  • Ok, nu in het actieve blad, maken we de tabel, dus de 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 = Cellen (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 de 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, dan moeten we het "Range" -object gebruiken, en daaronder moeten we de "Select" -methode gebruiken.

Code:

MyTable.Range.Select

Dit zou de volledige gegevenstabel selecteren, inclusief de kop.

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

Code:

MyTable.DataBodyRange.Select

Zo kunnen we spelen met tafels.

  • Hieronder vindt u de lijst met activiteitscodes ter referentie.

Code:

Sub List_Objects_Example2 () Dim MyTable As ListObject Set MyTable = ActiveSheet.ListObjects ("EmpTable") MyTable.DataBodyRange.Select 'Om gegevensbereik zonder kopteksten te selecteren MyTable.Range.Select' Om gegevensbereik met kopteksten MyTable.HeaderRowRange.Select 'te selecteren Selecteer tabelkoprijen MyTable.ListColumns (2) .Range.Select 'Om kolom 2 inclusief kop MyTable.ListColumns (2) .DataBodyRange.Select' Om kolom 2 zonder kop te selecteren End Sub

Op deze manier kunnen we de "ListObject" -collectie gebruiken om met Excel-tabellen te spelen.

Dingen om te onthouden

  • VBA ListObject is de verzameling objecten om naar Excel-tabellen te verwijzen.
  • Om eerst toegang te krijgen tot de ListObject-verzameling, moeten we specificeren naar welk werkblad we verwijzen.

Interessante artikelen...