VBA 목록상자

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Younjung Kim

Last updated on 4월 6, 2023

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

VBA에서는 사용자가 나열된 옵션 중 하나를 선택할 수 있는 목록 상자를 만들 수 있습니다. 목록 상자는 사용자 정의 폼에서 자주 사용되지만 워크시트에서도 사용할 수 있습니다. 이 튜토리얼에서는 목록 상자를 만들고, 값을 채우고, 삭제하는 방법을 배웁니다. 또한 VBA에서 사용자가 선택한 값을 가져와서 코드에서 사용하는 방법도 살펴봅니다.

콤보박스를 만드는 방법은 여기를 참조해 주세요: VBA 콤보박스

체크박스를 만드는 방법은 여기를 참조해 주세요: VBA 체크박스

 

목록 상자 만들기

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

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

삽입한 목록 상자를 선택하면 개발 도구 탭 에서 속성을 클릭할 수 있습니다:

이미지 2. 목록 상자 속성 변경하기

여기에서 목록 상자의 다양한 속성을 설정할 수 있습니다. 우선 이름 lstListBox로 변경했습니다. 이제 VBA 코드에서 이 이름을 가진 목록 상자를 사용할 수 있습니다.

VBA 코드로 목록 상자 채우기

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

With Sheet1.lstListBox
    .AddItem "John"
    .AddItem "Michael"
    .AddItem "Jennifer"
    .AddItem "Lilly"
    .AddItem "Robert"
End With

이미지 3에서 볼 수 있듯이 목록 상자를 5개의 이름(John, Michael, Jennifer, Lilly, Robert)으로 채웠습니다:

이미지 3. VBA에서 목록 상자 채우기

셀 범위에서 목록 상자 채우기

목록 상자를 채우는 또 다른 가능한 방법은 사용자가 직접 입력하도록 하는 것입니다. 목록 상자를 여러 범위에 연결할 수 있습니다. 따라서 사용자가 셀 범위에 새 값을 입력할 때마다 목록 상자가 해당 값으로 업데이트됩니다.

이 기능을 활성화하려면 목록 상자의 속성으로 이동하여 ListFillRange 속성을 설정해야 합니다:

이미지 4. 셀 범위에서 목록 상자 채우기

 

목록 상자를 E2:E5 범위와 연결하여 이름(Nathan, Harry, George, Roberta)을 넣었습니다. 결과적으로 이제 목록 상자가 입력된 이름으로 채워집니다.

 

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

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

Dim strSelectedItem As Variant

strSelectedItem = Sheet1.lstListBox.Value

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

Vba Listbox Get Selected Value

이미지 5. VBA 목록 상자에서 선택한 값 가져오기

 

목록 상자에서 George를 선택하고 프로시저를 실행했습니다. 이미지 5에서 볼 수 있듯이 strSelectedItem의 값은 우리가 선택한 값인 George입니다. 또한 코드에서 이 변수를 처리할 수 있습니다.

목록 상자의 내용 지우기

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

Sheet1.lstListBox.Clear

(참고: ListFillRange 속성이 설정된 경우 위 코드에서 오류가 발생합니다. 코드를 실행하기 전에 ListFillRange 속성을 지워야 합니다.

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

Vba Clear Listbox

이미지 6. 목록 상자 내용 지우기

 

사용자 정의 폼에서 목록상자 사용하기

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

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

 

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

이미지 8. 사용자 정의 폼에 목록 상자 삽입하기

 

 

목록 상자의 이름을 lstListBox로 지정합니다. 값을 채우려면 UserForm 객체의 Initialize 메서드에 다음 코드를 넣어야 합니다:

Private Sub UserForm_Initialize()
    
    With UserForm1.lstListBox

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

    End With

End Sub

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

Vba Listbox in Userform

이미지 9. 사용자 정의 폼에 값이 채워져 있는 목록상자

 

목록 상자에서 선택한 값을 가져오려면 이 글의 앞부분에서 설명한 워크시트의 목록 상자에 대해 동일한 방법을 사용해야 합니다.

vba-free-addin

VBA 코드 예시 추가 기능

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

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

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

무료 다운로드

VBA 코드 예시로 돌아가기