VBA – 엑셀 시트의 값을 참조하여 콤보박스 목록 채우기

공개됨 글쓴이 Admin댓글 남기기

아래 그림과 같은 VBA 폼(form)이 있다고 할 때 엑셀시트에 있는 값을 참조하여 콤보박스의 값 목록 채우기를 해 보자.

VBA combobox

콤보박스의 값 목록은 복잡한 코딩(AddItem 매소드를 이용하여 목록의 값을 1개씩 넣어 주어야 함)으로 만들 수도 있지만 엑셀 시트에 “이름정의”를 만들어 간단히 구현할 수도 있다.

 

실습용 엑셀파일을 다운로드 한 후 아래의 순서대로 콤보박스 기능을 구현해 보자.

1) 엑셀 시트에 값 목록을 만들고 이름 정의하기

다음과 같이 콤보박스에 표시할 값 목록 2개를 엑셀시트에 만든다.

 

등급에 해당하는 값 범위(A2:A4)를 마우스로 선택하고 이름상자에 “등급”이라고 입력한다.

 

지역에 해당하는 값 범위(C2:C8)를 마우스로 선택하고 이름상자에 “지역”이라고 입력한다.

 

2) VBA 폼에 콤보박스 만들기

엑셀에서 비주얼베이직 에디터를 열고(Alt + F11를 누름) 다음 그림과 같이 폼을 추가하고 콤보박스 2개, 커맨드 버튼 1개를 만든다.

 

3) 폼의 속성에 “이름정의”를 입력

“등급” 콤보박스 컨트롤 ComboBox1의 속성 중 Rowsource 속성에 조금 전에 만든 이름정의 “등급”을 입력한다.

 

위와 마찬가지 방법으로 “지역” 콤보박스 컨트롤 ComboBox2의 속성 중 Rowsource 속성에 조금 전에 만든 이름정의 “지역”을 입력한다.

 

4) 콤보박스에서 선택된 값 보기 기능 구현

사용자가 콤보박스의 특정항목을 선택하면 어떤 값이 선택되었는지 보여주는 소스코드를 커맨드버튼 콘트롤의 클릭이벤트에 다음과 같이 추가하자.

이 소스코드에서 Me.ComboBox1.Value는 콤보박스에서 현재 선택된 값이다.

Private Sub CommandButton1_Click()

    MsgBox "ComboBox1 : " & Me.ComboBox1.Value & vbCrLf & vbCrLf & "ComboBox2 : " & Me.ComboBox2.Value
    
End Sub

 

5) 실행 하기

아래와 같이 비주얼베이직 에디터 상태에서 폼을 선택한 후 실행버튼을 클릭하면

 

폼화면이 띄워진다. 값을 선택하고 “선택된 값 보기”를 클릭하면

VBA combobox

 

아래와 같이 선택된 값이 표시된다.

 

이것으로 “엑셀 시트의 값을 참조하여 콤보박스 목록 채우기” 를 마친다.

댓글 남기기

이메일은 공개되지 않습니다.