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.