엑셀 VBA 콤보박스 ComboBox 의존 관계 데이터 선택 기능 만드는 방법 |
환경: Microsoft Excel 2013 |
두 개의 콤보박스에서 뒤에 있는 데이터가 앞에 있는 콤보박스에 의해 결정된다면 어떻게 구현해야 할까요? 오늘은 두 개의 콤보박스가 의존 관계를 가지고 있을 때 구현하는 방법에 대해 알아 보겠습니다. 방법은 여러 가지가 있겠지만 저는 Select Case 문을 이용해서 구현하였습니다.
▼ 먼저 [삽입] 메뉴 > [사용자 정의 폼]을 선택해서 새로운 Form 을 추가합니다.
▼ 다음은 Form 화면에 의존 관계를 구현할 두 개의 콤보박스를 구현합니다.
▼ 폼이 뜨면 실행되는 초기화 함수부터 구현합니다. 왼쪽 콤보박스에서 UserForm 과 오른쪽 콤보박스에서 Initialize 를 선택합니다. 그럼 초기화 함수 UserForm_Initialize() 함수가 자동으로 생성됩니다. 함수에는 왼쪽 콤보 박스에 데이터를 채우는 기능이 들어갔습니다.
Private Sub UserForm_Initialize() With ComboBox1 .AddItem "야채" .AddItem "과일" .AddItem "약초" End With End Sub |
▼ 왼쪽 콤보박스가 변경되면 오른쪽 콤보박스의 내용이 변경되어야 하므로 콤보박스 데이터를 선택했을 때 발생하는 ComboBox1_Change() 함수 안에 구현하였습니다. Select Case 문을 이용해서 왼쪽 콤보박스의 인덱스 번호에 맞춰 의존 관계에 있는 데이터들을 추가합니다.
Private Sub ComboBox1_Change()
Dim index As Integer
index = ComboBox1.ListIndex
ComboBox2.Clear
Select Case index Case Is = 0 With ComboBox2 .AddItem "배추" .AddItem "상추" .AddItem "고추" End With Case Is = 1 With ComboBox2 .AddItem "사과" .AddItem "포도" .AddItem "자두" End With Case Is = 2 With ComboBox2 .AddItem "인삼" .AddItem "더덕" .AddItem "도라지" End With End Select
ComboBox2.ListIndex = 0
End Sub |
댓글을 달아 주세요
질문 2022.01.29 15:19 댓글주소 수정/삭제 댓글쓰기
안녕하세요 글 잘읽고 많이 배웠습니다.
여쭤볼게 있어서 댓글남깁니다.
콤보박스 여러개를 의존관계로 묶으려면 어떻게 해야할까요??
아래 예시처럼 만들고싶습니다.
1번박스 "야채"
"과일"
2번박스 "배추" "상추" "고추" "양배추"
"사과" "포도" "배"
3번박스 "300원,400원" "200원,400원,700원" "100원,150원,200원" "120원,110원,90원"
"1000원,1500원,2000원" "1200원, 1300원,1400원" "1500원,1600원"