ListObjects VBA - Przewodnik po tabelach ListObject Excel w Excel VBA

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.

Interesujące artykuły...