VBA ListObjects

Was sind ListObjects in VBA?

In einer Tabelle sehen wir normalerweise einen Datensatz, aber in der VBA-Terminologie gibt es viel mehr, z. B. gibt es einen Bereich des gesamten Datenlistenbereichs, die Spalte wird als Listenspalte bezeichnet und die Zeile wird als Listenzeile bezeichnet und so weiter Um auf diese Eigenschaften zugreifen zu können, verfügen wir über eine integrierte Funktion namens Listobjects, die mit der Arbeitsblattfunktion verwendet wird.

Mit VBA ListObject können Sie beim Schreiben des VBA-Codes auf die Excel-Tabellen verweisen. Mit VBA LISTOBJECTS können wir Tabellen erstellen, löschen und vollständig mit Excel-Tabellen im VBA-Code herumspielen. Excel-Tabellen sind knifflig, Anfänger und selbst für fortgeschrittene Benutzer ist es schwierig, mit Tabellen zu arbeiten. Da in diesem Artikel über das Verweisen auf Excel-Tabellen in der VBA-Codierung gesprochen wird, ist es besser, dass Sie über gute Kenntnisse in Excel-Tabellen verfügen.

Wenn die Daten in Tabellen konvertiert werden, arbeiten wir nicht mehr mit einem Zellbereich, sondern müssen mit Tabellenbereichen arbeiten. In diesem Artikel zeigen wir Ihnen, wie Sie mit Excel-Tabellen arbeiten, um VBA-Codes effizient zu schreiben.

Erstellen Sie das Tabellenformat mit ListObjects in Excel VBA

Schauen Sie sich zum Beispiel die folgenden Excel-Daten an.

Mit VBA ListObject-Code erstellen wir ein Tabellenformat für diese Daten.

Sie können diese VBA ListObjects Excel-Vorlage hier herunterladen - VBA ListObjects Excel-Vorlage
  • Für diese Daten müssen wir zuerst die zuletzt verwendete Zeile und Spalte ermitteln. Definieren Sie daher zwei Variablen, um diese zu ermitteln.

Code:

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

  • Verwenden Sie den folgenden Code, um die zuletzt verwendete Zeile und Spalte zu finden.

Code:

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

  • Definieren Sie nun eine weitere Variable, die die Referenz der Daten enthält.

Code:

 Dim Rng As Range 

  • Stellen Sie nun den Verweis auf diese Variable mit dem folgenden Code ein.

Code:

 Setze Rng = Zellen (1, 1). Größe ändern (LR, LC)

Jetzt müssen wir die VBA-Methode "ListObject.Add" verwenden, um eine Tabelle zu erstellen. Nachfolgend finden Sie die Syntax derselben.

ListObject.Add (Quelle, XlListObjectHasHeaders, Ziel, TableStyleName)

Quelle: Dies ist nichts für welchen Zellbereich wir die Tabelle einfügen. Daher können wir hier zwei Argumente angeben, nämlich "xlSrcRange" und "xlSrcExternal".

XlListObjectHasHeaders: Wenn die Tabelle, in die Daten eingefügt werden, Überschriften enthält oder nicht. Wenn ja, können wir "xlYes" bereitstellen, wenn nicht, können wir "xlNo" bereitstellen.

Ziel: Dies ist nichts anderes als unser Datenbereich.

Tabellenstil: Wenn Sie einen Tabellenstil anwenden möchten, können wir Stile bereitstellen.

  • Ok, jetzt erstellen wir im aktiven Blatt die Tabelle, sodass der folgende Code eine Tabelle für uns erstellen würde.

Code:

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

  • Danach müssen wir dieser Tabelle einen Namen geben.

Code:

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

  • Unten finden Sie den vollständigen Code als Referenz.

Code:

 Sub List_Objects_Example1 () Dim LR As Long Dim LC As Long LR = Zellen (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, lass uns den Code ausführen und die Magie sehen.

Es hat die Tabelle mit den genannten Daten erstellt und den Tabellennamen als "EmpTable" angegeben .

Formatieren von Excel-Tabellen mit VBA ListObjects

Sobald die Excel-Tabelle erstellt wurde, können wir mithilfe der vba ListObject-Auflistung mit Tabellen arbeiten.

  • Definieren Sie zunächst die Variable als "ListObject".

Code:

 Sub List_Objects_Example2 () Dim MyTable As ListObject End Sub 

  • Stellen Sie nun den Verweis auf diese Variable mithilfe des Tabellennamens ein.

Code:

 Sub List_Objects_Example2 () MyTable als ListObject dimmen Set MyTable = ActiveSheet.ListObjects ("EmpTable") End Sub 

Jetzt enthält die Variable "MyTable" die Referenz für die Tabelle "EmpTable".

  • Geben Sie den Variablennamen ein und setzen Sie einen Punkt, um die Eigenschaften und Methoden des VBA ListObject anzuzeigen.

Wenn wir beispielsweise die gesamte Tabelle auswählen möchten, müssen wir das Objekt "Range" und darunter die Methode "Select" verwenden.

Code:

MyTable.Range.Select

Dies würde die gesamte Datentabelle einschließlich der Überschrift auswählen.

  • Wenn Sie nur den Inhalt der Tabelle ohne Überschriften auswählen möchten, müssen Sie "DataBodyRange" verwenden.

Code:

MyTable.DataBodyRange.Select

So können wir mit Tischen herumspielen.

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