본문 바로가기
ListObject object

ListObject.ListColumns property

2024. 3. 3.

ListObject.ListColumns 속성

ListObject 개체에 있는 열 모두를 나타내는 ListColumns 컬렉션을 반환하며 읽기 전용입니다.

Syntax
expression.ListColumns

expression : ListObject 개체를 나타내는 변수입니다.

다음은 ListColumns 속성을 호출하여 만든 ListColumns 컬렉션 개체의 둘째 열 이름을 표시하는 예제입니다. 이 코드를 실행하려면 Sheet1 워크시트에 테이블이 있어야 합니다.

Sub DisplayColumnName()
    Dim wrksht As Worksheet
    Dim objListObj As ListObject
    Dim objListCols As ListColumns

    Set wrksht = ActiveWorkbook.Worksheets("Sheet1")
    Set objListObj = wrksht.ListObjects(1)
    Set objListCols = objListObj.ListColumns

    Debug.Print objListCols(2).Name
End Sub

매크로 실행 후

다음 코드는 지정된 시트의 지정된 테이블에 있는 각 열의 이름, 인덱스, 범위를 출력합니다.

Sub PrintTableColumnInfo()
    Dim sheetName As String
    Dim tableName As String
    SetSheetAndTableNames sheetName, tableName

    Dim ws As Worksheet
    Set ws = GetWorksheetByName(sheetName)

    If ws Is Nothing Then
        ShowMessage "시트 '" & sheetName & "'이(가) 존재하지 않습니다."
        Exit Sub
    Else
    End If

    Dim tbl As ListObject
    Set tbl = GetTableByName(ws, tableName)

    If tbl Is Nothing Then
        ShowMessage "테이블 '" & tableName & "'이(가) '" & sheetName & "' 시트에 존재하지 않습니다."
        Exit Sub
    Else
    End If

    PrintColumnInfo tbl
End Sub

Sub SetSheetAndTableNames(ByRef sheetName As String, ByRef tableName As String)
    sheetName = "Sheet1"
    tableName = "Product"
End Sub

Function GetWorksheetByName(sheetName As String) As Worksheet
    On Error Resume Next
    Set GetWorksheetByName = ThisWorkbook.Sheets(sheetName)
    On Error GoTo 0
End Function

Function GetTableByName(ws As Worksheet, tableName As String) As ListObject
    On Error Resume Next
    Set GetTableByName = ws.ListObjects(tableName)
    On Error GoTo 0
End Function

Sub PrintColumnInfo(tbl As ListObject)
    Dim col As ListColumn
    For Each col In tbl.ListColumns
        Debug.Print "Column Name: " & col.Name
        Debug.Print "Column Index: " & col.Index
        Debug.Print "Column Range: " & col.DataBodyRange.Address
        Debug.Print "-----------------------"
    Next col
End Sub

Sub ShowMessage(message As String)
    MsgBox message
End Sub

매크로 실행 후

다음 코드는 표에 새 열을 추가합니다.

Sub AddNewColumn()
    Dim lo As ListObject
    Set lo = ThisWorkbook.Sheets("Sheet1").ListObjects("Table1")

    lo.ListColumns.Add

    Set lo = Nothing
End Sub

다음 코드는 표의 첫 번째 열을 삭제합니다.

Sub DeleteColumn()
    Dim lo As ListObject
    Set lo = ThisWorkbook.Sheets("Sheet1").ListObjects("Table1")

    lo.ListColumns(1).Delete

    Set lo = Nothing
End Sub

다음 코드는 "Sheet1"에 있는 테이블("Table1")의 첫 번째 열의 첫 번째 셀의 값을 메시지 박스로 표시합니다.

Sub ReferColumn()
    Dim lo As ListObject
    Set lo = ThisWorkbook.Sheets("Sheet1").ListObjects("Table1")

    MsgBox lo.ListColumns(1).Range.Cells(1, 1).Value

    Set lo = Nothing
End Sub

다음 코드는 Sheet1에 있는 테이블("Table1")의 열 수를 메시지 박스로 표시합니다.

Sub CountColumns()
    Dim lo As ListObject
    Set lo = ThisWorkbook.Sheets("Sheet1").ListObjects("Table1")

    MsgBox lo.ListColumns.Count

    Set lo = Nothing
End Sub

도움말 출처

ListObject.ListColumns property (Excel)

Office VBA reference topic

learn.microsoft.com

'ListObject object' 카테고리의 다른 글

ListObject.ShowAutoFilter property  (0) 2024.03.03
ListObject.ListRows property  (0) 2024.03.03
ListObject.HeaderRowRange property  (0) 2024.03.03
ListObject.DataBodyRange property  (0) 2024.03.02
ListObject.AutoFilter property  (0) 2024.03.02