VBA ListObjects | Excel VBA의 ListObject Excel 테이블 안내

VBA의 ListObject는 무엇입니까?

테이블에서 일반적으로 우리가 보는 것은 데이터 세트이지만 VBA 용어로는 전체 데이터 목록 범위의 범위가 있고 열은 목록 열로, 행은 목록 행으로 알려진 등 훨씬 더 많습니다. , 따라서이 속성에 액세스하기 위해 워크 시트 함수와 함께 사용되는 Listobjects라는 내장 함수가 있습니다.

VBA ListObject는 VBA 코드를 작성하는 동안 Excel 테이블을 참조하는 방법입니다. VBA LISTOBJECTS를 사용하여 테이블을 만들고 삭제할 수 있으며 VBA 코드에서 Excel 테이블을 완전히 사용할 수 있습니다. Excel 표는 까다 롭고 초보자이며 중급 수준의 사용자도 표로 작업하기가 어렵습니다. 이 기사에서는 VBA 코딩에서 Excel 테이블을 참조하는 방법에 대해 설명하므로 Excel의 테이블에 대해 잘 알고있는 것이 좋습니다.

데이터가 테이블로 변환되면 더 이상 셀 범위로 작업하지 않고 테이블 범위로 작업해야하므로이 기사에서는 Excel 테이블을 사용하여 VBA 코드를 효율적으로 작성하는 방법을 보여줍니다.

Excel VBA에서 ListObjects를 사용하여 테이블 형식 만들기

예를 들어, 아래 엑셀 데이터를보십시오.

VBA ListObject 코드를 사용하여이 데이터에 대한 테이블 형식을 만듭니다.

이 VBA ListObjects Excel 템플릿은 여기에서 다운로드 할 수 있습니다. – VBA ListObjects Excel 템플릿
  • 이 데이터의 경우 먼저 마지막으로 사용 된 행과 열이 무엇인지 찾아야하므로이를 찾기 위해 두 개의 변수를 정의하십시오.

암호:

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

  • 마지막으로 사용한 행과 열을 찾으려면 아래 코드를 사용하십시오.

암호:

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

  • 이제 데이터 참조를 보유 할 변수를 하나 더 정의하십시오.

암호:

 범위로 Dim Rng 

  • 이제 아래 코드를 사용하여이 변수에 대한 참조를 설정하십시오.

암호:

 Rng = Cells (1, 1)로 설정합니다 .Resize (LR, LC)

이제 VBA“ListObject.Add”메서드를 사용하여 테이블을 만들어야하며 아래는 동일한 구문입니다.

ListObject.Add (소스, XlListObjectHasHeaders, 대상, TableStyleName)

출처 : 표를 삽입하는 셀 범위가 아닙니다. 따라서 여기에 "xlSrcRange""xlSrcExternal" 이라는 두 개의 인수를 제공 할 수 있습니다 .

XlListObjectHasHeaders : 데이터를 삽입하는 테이블에 헤더가 있는지 여부. 그렇다면 "xlYes" 를 제공 할 수 있습니다. 그렇지 않은 경우 "xlNo" 를 제공 할 수 있습니다 .

목적지 : 이것은 우리의 데이터 범위에 불과합니다.

표 스타일 : 표 스타일 을 적용하려면 스타일을 제공 할 수 있습니다.

  • 좋아, 이제 활성 시트에서 테이블을 생성하고 있으므로 아래 코드가 테이블을 생성합니다.

암호:

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

  • 그런 다음이 테이블에 이름을 지정해야합니다.

암호:

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

  • 아래는 참조 용 전체 코드입니다.

암호:

 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 Long Set 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 

좋아, 코드를 실행하고 마법을 보자.

언급 된 데이터에 대한 테이블을 생성하고 테이블 이름을 “EmpTable”로 지정했습니다 .

VBA ListObjects를 사용하여 Excel 테이블 서식 지정

Excel 테이블이 생성되면 vba ListObject 컬렉션을 사용하여 테이블 작업을 할 수 있습니다.

  • 먼저 변수를“ListObject”로 정의합니다.

암호:

 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.