환경 : Microsoft Excel 2010 |
목록상자 컨트롤은 다중선택이 가능하며 여러 자료를 동시에 조회 가능합니다. 콤보박스는 하나의 자료만 볼수 있지만 목록은 펼쳐서 보여주므로 여러 자료를 동시에 볼수 있습니다. 사용법이나 속성등은 대부분 비슷해서 금방 파악이 될것입니다.
▼ 아래 예제는 혼수를 장만하기 위해 물건을 선택한다고 생각해 봅죠. 왼쪽에 대분류가
있고 대분류를 선택하면 오른쪽 그 상세 내용이 나오게 됩니다. 아래 내용을 목록상자로 꾸며 볼 것입니다.
▼ 폼에서 두개의 목록상자컨트롤을 추가합니다. 하나는 목록의 제목에 해당하므로 열이 하나이고 오른쪽에 있는 목록은 제품명과 가격이 들어가게 됩니다.
▼ 폼이 초기화 할 때 값을 넣어야 하므로 UerForm_Initialize() 함수를 생성합니다.
아래 소스처럼 왼쪽에 있는 목록상자에 Additem 이용해 값을 추가 합니다.
Private Sub UserForm_Initialize() With Me.lstTitle .AddItem "전자제품" .AddItem "가구" .AddItem "주방기구" .AddItem "생활용품" End With End Sub |
▼ 왼쪽 목록상자에 값을 더블클릭 해서 선택하게 되면 오른쪽에 해당하는 제품을 나열할 것입니다. 그럴려면 목록상자를 더블클릭할 때 발생하는 이벤트 함수를 만들어야 합니다. 상단 콤보박스에서 왼쪽은 목록상자컨트롤을, 오른쪽은 DblClick 선택하시면 함수가 생성됩니다.
▼ 아래 소스는 목록상자를 더블클릭했을 때 오른쪽상세 목록상자에 해당하는 제품을 보여주는 내용입니다. 상세목록상자의 이름이 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' 카테고리의 다른 글
엑셀(Excel) VBA - 셀영역의 값을 복사하기 (1) | 2014.12.18 |
---|---|
엑셀(Excel) VBA - 스크롤 막대 컨트롤 이용해서 대출상환금 구하기 (0) | 2014.12.16 |
엑셀(Excel) VBA - 목록상자에서 다중선택하여 엑셀에 값 추가하기 (7) | 2014.12.15 |
엑셀(Excel) VBA - 폼에 배치한 컨트롤 정렬하기 (0) | 2014.12.12 |
엑셀(Excel) VBA - 콤보상자에 ID 를 추가하여 선택할수 있도록 하기 (0) | 2014.12.08 |
엑셀(Excel) VBA - 사용자정의 폼의 타이틀바에서 X 버튼 제어하기 (1) | 2014.12.07 |
엑셀(Excel) VBA - 사용자 정의 폼으로 로그인 기능 만들기 3부 (6) | 2014.12.07 |
엑셀(Excel) VBA - 사용자 정의 폼으로 로그인 기능 만들기 2부 (1) | 2014.12.06 |