엑셀(Excel) VBA - 목록상자 컨트롤 이용하여 목록 조회, 선택하기

엑셀(Excel)/VBA

엑셀(Excel) VBA - 목록상자 컨트롤 이용하여 목록 조회, 선택하기

 

환경 : Microsoft Excel 2010

 

목록상자 컨트롤은 다중선택이 가능하며 여러 자료를 동시에 조회 가능합니다. 콤보박스는 하나의 자료만 볼수 있지만 목록은 펼쳐서 보여주므로 여러 자료를 동시에 볼수 있습니다. 사용법이나 속성등은 대부분 비슷해서 금방 파악이 될것입니다.

 

아래 예제는 혼수를 장만하기 위해 물건을 선택한다고 생각해 봅죠. 왼쪽에 대분류가

있고 대분류를 선택하면 오른쪽 그 상세 내용이 나오게 됩니다. 아래 내용을 목록상자로 꾸며 볼 것입니다.

 

엑셀(Excel) VBA - 목록상자 컨트롤 이용하여 목록 조회, 선택하기

 

폼에서 두개의 목록상자컨트롤을 추가합니다. 하나는 목록의 제목에 해당하므로 열이 하나이고 오른쪽에 있는 목록은 제품명과 가격이 들어가게 됩니다.

엑셀(Excel) VBA - 목록상자 컨트롤 이용하여 목록 조회, 선택하기

 

폼이 초기화 할 때 값을 넣어야 하므로 UerForm_Initialize() 함수를 생성합니다.

아래 소스처럼 왼쪽에 있는 목록상자에 Additem 이용해 값을 추가 합니다.

 

Private Sub UserForm_Initialize()

    With Me.lstTitle

        .AddItem "전자제품"

        .AddItem "가구"

        .AddItem "주방기구"

        .AddItem "생활용품"

    End With

End Sub

 

엑셀(Excel) VBA - 목록상자 컨트롤 이용하여 목록 조회, 선택하기

 

왼쪽 목록상자에 값을 더블클릭 해서 선택하게 되면 오른쪽에 해당하는 제품을 나열할 것입니다. 그럴려면 목록상자를 더블클릭할 때 발생하는 이벤트 함수를 만들어야 합니다. 상단 콤보박스에서 왼쪽은 목록상자컨트롤을, 오른쪽은 DblClick 선택하시면 함수가 생성됩니다.

엑셀(Excel) VBA - 목록상자 컨트롤 이용하여 목록 조회, 선택하기

 

아래 소스는 목록상자를 더블클릭했을 때 오른쪽상세 목록상자에 해당하는 제품을 보여주는 내용입니다. 상세목록상자의 이름이 lstDetail 인데 제품명과 가격을 표시하기 위해 컬럼을 ColumnCount =2 로 셋팅했네요. 상세 목록상자에 옵션을 끝냈으면 값을 집어넣어야 하겠죠. 목록상자에서 몇번째를 선택했느냐에 따라 Select Case 써서 영역을 가져온뒤 각 case 별로 상세 목록상자에 셋팅을 하였습니다.

 

Private Sub lstTitle_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

    With Me.lstDetail

        .ColumnCount = 2

        .ColumnWidths = "120;50"

        .ColumnHeads = True

        Select Case Me.lstTitle.ListIndex

        Case 0

            .RowSource = "상품정보!A2:B14"

        Case 1

            .RowSource = "상품정보!C2:D7"

        Case 2

            .RowSource = "상품정보!E2:F11"

        Case 3

            .RowSource = "상품정보!G2:H11"

        End Select

        .ListIndex = 0

    End With

End Sub

 

엑셀(Excel) VBA - 목록상자 컨트롤 이용하여 목록 조회, 선택하기

 

이렇게 왼쪽 목록을 클릭하게 되면 오른쪽에 상세 내용이 표시되는 목록상자 컨트롤에 대해서 알아보았습니다. 동작하는 모습이 담긴 간단한 영상도 첨부하였습니다. 참고하시기 바랍니다.

 

저작자 표시 비영리 변경 금지
신고
Posted by 녹두장군