Hvad er ListObjects i VBA?
I en tabel er normalt, hvad vi ser, et datasæt, men i VBA-terminologi er der meget mere, da der er rækkevidde for det samlede datalisteområde, kolonnen er kendt som listekolonnen, og rækken er kendt som listerækken og så videre , så for at få adgang til disse egenskaber har vi en indbygget funktion kendt som Listobjects, og som bruges sammen med regnearkfunktionen.
VBA ListObject er en måde at henvise til excel-tabellerne, mens du skriver VBA-koden. Ved at bruge VBA LISTOBJECTS kan vi oprette, slette bord, og helt kan vi lege med excel-tabeller i VBA-kode. Excel-tabeller er vanskelige, begyndere og endda i et omfang, brugere på mellemniveau har svært ved at arbejde med tabeller. Da denne artikel taler om henvisning til excel-tabeller i VBA-kodning, er det bedre, at du har god viden om tabeller i excel.
Når dataene konverteres til tabeller, arbejder vi ikke længere med en række celler. Vi skal snarere arbejde med tabelområder, så i denne artikel viser vi dig, hvordan du arbejder med excel-tabeller for at skrive VBA-koder effektivt.
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba.png.webp)
Opret tabelformat ved hjælp af ListObjects i Excel VBA
Se f.eks. Nedenstående Excel-data.
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_2.png.webp)
Ved hjælp af VBA ListObject-koden opretter vi et tabelformat til disse data.
- For disse data skal vi først finde ud af, hvad der er den sidst anvendte række og kolonne, så definer to variabler for at finde dette.
Kode:
Underliste_Objekter_eksempel1 () Dim LR så lang Dim LC som lang ende Sub
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_3.png.webp)
- Brug nedenstående kode for at finde den sidst anvendte række og kolonne.
Kode:
LR = Celler (Rækker.Tælling, 1) .End (xlUp) .Række LC = Celler (1, Kolonner.Tælling) .End (xlToLeft) .Kolonne
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_4.png.webp)
- Definer nu en yderligere variabel, der indeholder referencen til dataene.
Kode:
Dæmp Rng som rækkevidde
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_5.png.webp)
- Indstil nu henvisningen til denne variabel ved hjælp af nedenstående kode.
Kode:
Indstil Rng = celler (1, 1). Størrelse (LR, LC)
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_6.png.webp)
Nu skal vi bruge VBA "ListObject.Add" -metoden til at oprette en tabel, og nedenunder er syntaksen for den samme.
ListObject.Add (Source, XlListObjectHasHeaders, Destination, TableStyleName)
Kilde: Dette er intet for hvilket celleområde vi indsætter tabellen. Så vi kan levere to argumenter her, dvs. "xlSrcRange" og "xlSrcExternal."
XlListObjectHasHeaders: Hvis tabellen, der indsætter data, har overskrifter eller ej. Hvis ja, kan vi give “xlYes”. Hvis ikke, kan vi levere "xlNo."
Destination: Dette er intet andet end vores dataområde.
Tabelstil: Hvis du vil anvende en hvilken som helst tabelstil, kan vi levere typografier.
- Ok, nu i det aktive ark opretter vi tabellen, så nedenstående kode vil oprette en tabel for os.
Kode:
Dæmp Ws som regneark Sæt Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange, xllistobjecthasheaders: = xlYes, Destination: = Rng
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_7.png.webp)
- Efter dette er vi nødt til at give et navn til denne tabel.
Kode:
Ws.ListObjects (1) .name = "EmpTable"
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_8.png.webp)
- Nedenfor er den fulde kode til din reference.
Kode:
Underliste_Objekter_eksempel1 () Dim LR så lang Dim LC som lang LR = celler (rækker.Tælling, 1) .End (xlUp). Række LC = celler (1, kolonner.Tælling) .End (xlToLeft) .Kolonne dim Rng som rækkevidde Indstil Rng = Celler (1, 1). Størrelse (LR, LC) Dim Ws som regneark Sæt Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange, xllistobjecthasheaders: = xlYes, Destination: = Rng Ws.ListObjects (1) .name = " EmpTable "End Sub
Ok, lad os køre koden og se magien.
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_9.png.webp)
Det har oprettet tabellen til de nævnte data og givet tabelnavnet som "EmpTable."
Formatering af Excel-tabeller med VBA ListObjects
Når Excel-tabellen er oprettet, kan vi arbejde med tabeller ved hjælp af VBA ListObject-samlingen.
- Definér først variablen som "ListObject."
Kode:
Sub List_Objects_Example2() Dim MyTable As ListObject End Sub
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_10.png.webp)
- 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
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_11.png.webp)
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.
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_12.png.webp)
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
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_13.png.webp)
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
![](https://cdn.know-base.net/6631231/vba_listobjects_guide_to_listobject_excel_tables_in_excel_vba_14.png.webp)
Like this, we can play around with tables.
- Nedenfor er listen over aktivitetskoder til din reference.
Kode:
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 Vælg tabelhovedrækker MyTable.ListColumns (2) .Range.Select 'For at vælge kolonne 2 inklusive header MyTable.ListColumns (2) .DataBodyRange.Select' For at vælge kolonne 2 uden header End Sub
På denne måde kan vi bruge “ListObject” -samlingen til at lege med excel-tabeller.
Ting at huske
- VBA ListObject er samlingen af objekter, der refererer til excel-tabeller.
- For at få adgang til ListObject-samlingen først skal vi specificere, hvilket regneark vi henviser til.