목록상자 컨트롤은 다중선택이 가능하며 여러 자료를 동시에 조회 가능합니다. 콤보박스는 하나의 자료만 볼수 있지만 목록은 펼쳐서 보여주므로 여러 자료를 동시에 볼수 있습니다. 사용법이나 속성등은 대부분 비슷해서 금방 파악이 될것입니다.
▼ 아래 예제는 혼수를 장만하기 위해 물건을 선택한다고 생각해 봅죠. 왼쪽에 대분류가 있고 대분류를 선택하면 오른쪽 그 상세 내용이 나오게 됩니다. 아래 내용을 목록상자로 꾸며 볼 것입니다.
▼ 폼에서 두개의 목록상자컨트롤을 추가합니다. 하나는 목록의 제목에 해당하므로 열이 하나이고 오른쪽에 있는 목록은 제품명과 가격이 들어가게 됩니다.
▼ 폼이 초기화 할 때 값을 넣어야 하므로 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' 카테고리의 다른 글
| 엑셀 VBA 동일한 글자색 셀 개수 구하기 (10) | 2026.05.28 |
|---|---|
| 엑셀 VBA 모듈(Module) 소스 파일 관리하기 (1) | 2026.05.27 |
| 엑셀 VBA 이미지 셀 영역에 맞춰서 넣기, ShapeRange 함수 이용 (2) | 2026.05.26 |
| 엑셀 VBA 콤보박스 ComboBox 의존 관계 데이터 선택 기능 만드는 방법 (1) | 2026.04.28 |
| 엑셀(Excel) VBA - InputBox 를 통한 다양한 형태의 값 입력받기 (0) | 2026.04.14 |
| 엑셀 VBA Range 객체 중 Areas 속성 사용하기 (1) | 2025.11.15 |
| 엑셀(Excel) VBA – 다른 시트의 값을 가져와서 데이터를 추가하는 방법 (4) | 2025.11.10 |
| 엑셀 VBA 개발에 도움이 되는 편집기창 이용 방법들 (0) | 2025.10.25 |
