VBA ListObjects

Co to są ListObjects w VBA?

W tabeli zwykle widzimy zestaw danych, ale w terminologii VBA jest znacznie więcej, takich jak zakres całkowitego zakresu listy danych, kolumna jest znana jako kolumna listy, a wiersz jest znany jako wiersz listy i tak dalej , więc aby uzyskać dostęp do tych właściwości, mamy wbudowaną funkcję znaną jako Listobjects, która jest używana z funkcją arkusza.

VBA ListObject to sposób odwoływania się do tabel programu Excel podczas pisania kodu VBA. Używając VBA LISTOBJECTS, możemy tworzyć, usuwać tabele i całkowicie możemy bawić się tabelami Excela w kodzie VBA. Tabele programu Excel są trudne, początkujący, a nawet do pewnego stopnia użytkownicy na poziomie średnio zaawansowanym mają trudności z pracą z tabelami. Ponieważ ten artykuł dotyczy odwoływania się do tabel programu Excel w kodowaniu VBA, lepiej jest mieć dobrą wiedzę na temat tabel w programie Excel.

Kiedy dane są konwertowane na tabele, nie pracujemy już z zakresem komórek, ale musimy pracować z zakresami tabel, więc w tym artykule pokażemy, jak pracować z tabelami Excela, aby efektywnie pisać kody VBA.

Utwórz format tabeli za pomocą ListObjects w Excel VBA

Na przykład spójrz na poniższe dane programu Excel.

Używając kodu VBA ListObject utworzymy format tabeli dla tych danych.

Możesz pobrać ten szablon VBA ListObjects Excel tutaj - Szablon VBA ListObjects Excel
  • Dla tych danych najpierw musimy znaleźć ostatni używany wiersz i kolumnę, więc zdefiniuj dwie zmienne, aby to znaleźć.

Kod:

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

  • Aby znaleźć ostatnio używany wiersz i kolumnę, użyj poniższego kodu.

Kod:

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

  • Teraz zdefiniuj jeszcze jedną zmienną do przechowywania odniesienia do danych.

Kod:

 Dim Rng As Range 

  • Teraz ustaw odniesienie do tej zmiennej, używając poniższego kodu.

Kod:

 Ustaw Rng = Cells (1, 1) .Resize (LR, LC)

Teraz musimy użyć metody VBA „ListObject.Add”, aby utworzyć tabelę, a poniżej znajduje się składnia tego samego.

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

Źródło: to nic, dla jakiego zakresu komórek wstawiamy tabelę. Możemy więc podać tutaj dwa argumenty, tj. „XlSrcRange” i „xlSrcExternal”.

XlListObjectHasHeaders: Jeśli tabela wstawiająca dane ma nagłówki lub nie. Jeśli tak, możemy podać „xlYes”, a jeśli nie, możemy podać „xlNo”.

Miejsce docelowe: to nic innego jak nasz zakres danych.

Styl tabeli: jeśli chcesz zastosować dowolny styl tabeli, możemy zapewnić style.

  • Ok, teraz w aktywnym arkuszu tworzymy tabelę, więc poniższy kod utworzyłby dla nas tabelę.

Kod:

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

  • Następnie musimy nadać nazwę tej tabeli.

Kod:

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

  • Poniżej znajduje się pełny kod w celach informacyjnych.

Kod:

 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 Ustaw 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, uruchommy kod i zobaczmy magię.

Utworzył tabelę na wspomniane dane i nadał tabeli nazwę „EmpTable” .

Formatowanie tabel Excela za pomocą VBA ListObjects

Po utworzeniu tabeli Excela możemy pracować z tabelami za pomocą kolekcji vba ListObject.

  • Najpierw zdefiniuj zmienną jako „ListObject”.

Kod:

 Sub List_Objects_Example2 () Dim MyTable As ListObject End Sub 

  • Teraz ustaw odwołanie do tej zmiennej, używając nazwy tabeli.

Kod:

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

Teraz zmienna „MyTable” zawiera odniesienie do tabeli „EmpTable”.

  • Wprowadź nazwę zmiennej i umieść kropkę, aby zobaczyć właściwości i metody VBA ListObject.

Na przykład, jeśli chcemy zaznaczyć całą tabelę, musimy skorzystać z obiektu „Range”, a pod nim użyć metody „Select”.

Kod:

MyTable.Range.Select

Spowoduje to wybranie całej tabeli danych, w tym nagłówka.

  • Jeśli chcesz zaznaczyć tylko zawartość tabeli bez nagłówków, musimy użyć „DataBodyRange”.

Kod:

MyTable.DataBodyRange.Select

W ten sposób możemy bawić się stołami.

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