VBA ListObjects | Veiledning til ListObject Excel-tabeller i Excel VBA

Hva er ListObjects i VBA?

I en tabell er det normalt sett et datasett, men i VBA-terminologi er det mye mer, for det er rekkevidde for det totale datalisteområdet, kolonnen er kjent som listekolonnen og raden er kjent som listen og så videre , så for å få tilgang til disse egenskapene har vi en innebygd funksjon kjent som Listobjects og som brukes med regnearkfunksjonen.

VBA ListObject er en måte å referere til excel-tabellene mens du skriver VBA-koden. Ved å bruke VBA LISTOBJECTS kan vi lage, slette tabeller, og totalt kan vi leke med excel-tabeller i VBA-kode. Excel-tabeller er vanskelige, nybegynnere og til og med i en grad mellomnivåbrukere synes det er vanskelig å jobbe med tabeller. Siden denne artikkelen snakker om å referere til excel-tabeller i VBA-koding, er det bedre at du har god kunnskap om tabeller i excel.

Når dataene konverteres til tabeller, jobber vi ikke lenger med en rekke celler, men vi trenger å jobbe med tabellområder, så i denne artikkelen vil vi vise deg hvordan du kan jobbe med excel-tabeller for å skrive VBA-koder effektivt.

Opprett tabellformat ved hjelp av ListObjects i Excel VBA

Se for eksempel på excel-dataene nedenfor.

Ved å bruke VBA ListObject-kode vil vi lage et tabellformat for disse dataene.

Du kan laste ned denne VBA ListObjects Excel-malen her - VBA ListObjects Excel-mal
  • For disse dataene må vi først finne ut hva som er den sist brukte raden og kolonnen, så definer to variabler for å finne dette.

Kode:

 Underliste_Objekter_eksempel1 () Dim LR så lang dim LC som lang slutt Sub 

  • Bruk koden nedenfor for å finne den sist brukte raden og kolonnen.

Kode:

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

  • Definer nå en variabel til for å holde referansen til dataene.

Kode:

 Dim Rng As Range 

  • Sett nå referansen til denne variabelen ved å bruke koden nedenfor.

Kode:

 Sett Rng = celler (1, 1). Størrelse (LR, LC)

Nå må vi bruke VBA "ListObject.Add" -metoden for å lage en tabell, og nedenfor er syntaksen for den samme.

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

Kilde: Dette er ingenting for hvilket celleområde vi setter inn tabellen. Så vi kan gi to argumenter her, dvs. “xlSrcRange” og “xlSrcExternal”.

XlListObjectHasHeaders: Hvis tabellen som setter inn data har overskrifter eller ikke. Hvis ja, kan vi gi "xlYes" hvis ikke, kan vi gi "xlNo".

Destinasjon: Dette er ingenting annet enn vårt dataserie.

Tabellstil: Hvis du vil bruke en hvilken som helst bordstil, kan vi tilby stiler.

  • Ok, nå i det aktive arket lager vi tabellen, så under kode vil det opprette en tabell for oss.

Kode:

 Demp Ws som regnearksett Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange, xllistobjecthasheaders: = xlYes, Destination: = Rng

  • Etter dette må vi gi et navn til denne tabellen.

Kode:

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

  • Nedenfor er den fullstendige koden for din referanse.

Kode:

 Underliste_objekter_eksempel1 () Dim LR så lang dim LC som lang LR = celler (rader, antall, 1). Slutt (xlUp). Rad LC = celler (1, kolonner. Antall). Slutt (xlToLeft). Kolonne dim Rng som område Sett 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, la oss kjøre koden og se magien.

Det har laget tabellen til de nevnte dataene og gitt tabellnavnet som "EmpTable" .

Formatering av Excel-tabeller med VBA ListObjects

Når Excel-tabellen er opprettet, kan vi jobbe med tabeller ved å bruke vba ListObject-samlingen.

  • Først definerer du variabelen som “ListObject”.

Kode:

 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.