VBA 콤보박스

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Younjung Kim

Last updated on 4월 8, 2023

이 튜토리얼에서는 VBA에서 콤보상자로 작업하는 방법을 보여드립니다.

콤보상자를 사용하면 드롭다운 메뉴 목록에서 옵션을 선택할 수 있습니다. 콤보박스는 VBA 사용자 정의 폼 또는 Excel 워크시트에 만들 수 있습니다. 이 튜토리얼에서는 VBA 및 Excel 워크시트에서 콤보상자를 만들고 조작하는 방법을 배웁니다.

목록상자를 만드는 방법을 배우려면 여기를 클릭하세요: VBA 목록 상자

체크박스를 만드는 방법을 배우려면 여기를 클릭하세요: VBA 체크박스

 

Excel 워크시트에서 콤보상자 만들기

워크시트에 콤보상자를 삽입하려면 개발 도구 탭으로 이동하여 삽입을 클릭하고 ActiveX 컨트롤에서 콤보상자를 선택해야 합니다:

이미지 1. 워크시트에 콤보상자 삽입하기

 

삽입한 콤보 상자를 선택하고 개발 도구 탭에서 속성을 클릭해 보세요:

이미지 2. 콤보상자 속성 변경하기

 

여기에서 콤보박스의 다양한 속성을 설정할 수 있습니다. 우선 속성 이름을 cmbComboBox로 변경했습니다. 이제 VBA 코드에서 변경한 이름으로 콤보상자를 사용할 수 있습니다.

VBA 코드에서 콤보상자 값 입력하기

먼저, 콤보상자에 값을 입력해야 합니다. 대부분의 경우 통합 문서를 열 때 콤보상자를 채워야 합니다. 따라서 Workbook 객체의 Open 프로시저에 콤보 상자를 채우는 코드를 넣어야 합니다. 이 프로시저는 사용자가 통합 문서를 열 때마다 실행됩니다. 다음 코드를 참조해 주세요.

With Sheet1.cmbComboBox

    .AddItem "영수"
    .AddItem "철수"
    .AddItem "수진"
    .AddItem "순자"
    .AddItem "영희"

End With

드롭다운 메뉴를 클릭하면 5개의 이름(영수, 철수, 수진, 순자, 영희) 중에서 선택할 수 있습니다:

이미지 3. 콤보상자 값 입력하기

 

셀 범위의 내용으로 콤보 상자 채우기

콤보상자를 채우는 또 다른 방법은 사용자가 직접 입력하도록 하는 것입니다. 콤보박스를 셀 범위에 연결해서 사용자가 셀 범위에 새로운 값을 입력할 때마다 콤보상자가 해당 값으로 업데이트됩니다.

이 기능을 활성화하려면 콤보상자의 속성으로 이동하여 ListFillRange 속성을 셀 범위(이 경우 E2:E5)로 설정해야 합니다:

이미지 4. 콤보상자를 셀 범위의 내용으로 채우기

 

콤보박스를 E2:E5 범위와 연결하여 원하는 이름(영수, 철수, 수진, 순자)을 입력했습니다. 콤보상자는 셀 범위에 있는 이름으로 채워집니다:

이미지 5. 셀 범위의 내용으로 채워진 콤보상자

 

VBA에서 콤보상자의 선택된 항목 가져오기

콤보상자의 목적은 사용자가 선택한 정보를 가져오는 것입니다. 사용자가 선택한 항목을 가져오려면 다음 코드를 사용해야 합니다:

Dim strSelectedItem As Variant

strSelectedItem = Sheet1.cmbComboBox.Value

사용자 선택 항목은 Sheet1.cmbComboBox 개체의 Value 속성에 있습니다. 이 값은 변수에 할당됩니다:

이미지 6. 콤보 상자에서 선택한 값을 VBA로 가져오기

 

콤보 상자에서 철수를 선택하고 프로시저를 실행했습니다. 이미지 5에서 볼 수 있듯이 strSelectedItem의 값은 철수입니다. 이제 코드에서 이 변수에 대한 추가 작업을 할 수 있습니다.

 

콤보상자 항목 지우기

VBA에서 콤보 상자를 지우려면 Sheet1.lstComboBox 개체의 Clear 메서드를 사용해야 합니다. 그러면 콤보 상자에서 모든 항목이 삭제됩니다. 다음 코드를 참고해 주세요:

Sheet1.cmbComboBox.Clear

Clear 메서드는 ListFillRange 속성을 삭제하지 않으므로 코드를 실행하기 전에 콤보 상자의 속성에서 이 속성을 제거해야 합니다..

코드를 실행하면 빈 콤보상자가 표시됩니다:

vba clear combobox

이미지 7. 콤보상자 항목 지우기

 

사용자 정의 폼에서 콤보박스 사용하기

앞서 언급했듯이 콤보박스는 사용자 정의 폼에서 가장 자주 사용됩니다. 콤보박스를 사용하는 방법을 설명하기 위해 먼저 사용자 정의 폼을 삽입해 보겠습니다. VBA 편집기에서 모듈 이름에서 마우스 오른쪽 버튼을 클릭하고 삽입을 클릭한 다음 사용자 정의폼을 선택합니다:


이미지 8. 사용자 정의 폼 삽입하기

 

삽입을 위한 컨트롤을 표시하려면 도구 상자를 활성화해야 합니다. 이렇게 하려면 도구 모음에서 도구 상자 아이콘을 클릭합니다. 그러면 사용 가능한 모든 컨트롤이 있는 창이 나타납니다. 콤보상자를 클릭하여 사용자 정의  폼에서 만들 수 있습니다.

이미지 9. 사용자 정의 폼에 콤보상자 삽입하기

 

콤보박스의 이름을 cmbComboBox로 지정하였습니다. 값을 채우려면 UserForm 객체의 Initialize 메서드에 다음 코드를 넣어야 합니다:

Private Sub UserForm_Initialize()

    With UserForm1.cmbComboBox

        .AddItem "John"
        .AddItem "Michael"
        .AddItem "Jennifer"
        .AddItem "Lilly"
        .AddItem "Robert"

    End With

End Sub

이 코드는 사용자가 사용자 폼을 실행할 때마다 트리거되고 5개의 이름으로 콤보박스를 채웁니다:

이미지 10. 사용자 정의 폼에 값이 채워져 있는 콤보상자

 

콤보상자에서 선택한 값을 가져오려면 이 글의 앞부분에서 설명했듯이, 워크시트의 콤보상자에서 이용했던 동일한 코드를 사용해야 합니다.

vba-free-addin

VBA 코드 예시 추가 기능

본 웹사이트에 있는 모든 코드 예시에 쉽게 접근해보세요.

메뉴로 이동하여 클릭만 하면 코드는 모듈에 바로 입력됩니다. .xlam 추가 기능.

(설치가 필요 없습니다!)

무료 다운로드

VBA 코드 예시로 돌아가기