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. Korzystając z 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 średnio zaawansowani mają trudności z pracą z tabelami. Ponieważ w tym artykule omówiono odwoływanie się do tabel programu Excel w kodowaniu VBA, lepiej jest mieć dobrą wiedzę na temat tabel w programie Excel.
Gdy dane są konwertowane na tabele, nie pracujemy już z zakresem komórek. Musimy raczej 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.

Korzystając z kodu VBA ListObject, utworzymy format tabeli dla tych danych.
- W przypadku tych danych najpierw musimy znaleźć ostatnio 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”. 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 podstawie wspomnianych danych 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ę, to musimy skorzystać z obiektu „Range”, a pod nim użyć metody „Select”.
Kod:
MyTable.Range.Select

Spowoduje to zaznaczenie 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.
- Poniżej znajduje się lista kodów czynności w celach informacyjnych.
Kod:
Sub List_Objects_Example2 () Dim MyTable As ListObject Set MyTable = ActiveSheet.ListObjects ("EmpTable") MyTable.DataBodyRange.Select 'Aby wybrać zakres danych bez nagłówków MyTable.Range.Select' Aby wybrać zakres danych z nagłówkami MyTable.HeaderRowRange.Select ' Wybierz wiersze nagłówków tabeli MyTable.ListColumns (2) .Range.Select 'Aby wybrać kolumnę 2, w tym nagłówek MyTable.ListColumns (2) .DataBodyRange.Select' Aby wybrać kolumnę 2 bez nagłówka End Sub
W ten sposób możemy użyć kolekcji „ListObject” do zabawy z tabelami programu Excel.
Rzeczy do zapamiętania
- VBA ListObject to zbiór obiektów odwołujących się do tabel programu Excel.
- Aby uzyskać dostęp do kolekcji ListObject najpierw, musimy określić, do którego arkusza się odnosimy.