본문 바로가기

엑셀VBA

[엑셀VBA] 콤보박스에 항목(목록) 추가하기 Combobox

반응형

안녕하십니까 춤추는초코칩입니다.

엑셀을 사용하다 보면, 다양한 창이 팝업 됩니다. 이렇게 팝업 된 창을 대화상자라고 합니다.

엑셀에서 데이터탭에 데이터유효성검사라는게 있습니다. 이 것도 하나의 대화상자입니다. 

이런 대화상자를 "유저 폼"이라고도 불리는 "사용자 정의 폼"을 통해 만들 수 있습니다.

오늘은 사용자 정의 폼에서 사용할 수 있는 컨트롤 중에서, 콤보박스(혹은 콤보상자)에 대해 알아보겠습니다.

콤보박스는 아래와 같이, 여러 항목 중에서 하나의 항목을 선택하는 기능을 합니다. 데이터 유효성을 보시면 제한 대상이 모든 값부터 사용자 지정까지 있는데, 이 중에 하나를 선택할 수 있습니다. 

ㅗㅁ보상

오늘은 위 예제와 동일한 기능을 하는 콤보박스를 만들어 보겠습니다.

1. 콤보박스 추가

우선, 삽입에서 사용자 정의 폼을 추가합니다.

사용자 정의 폼에서 콤보상자를 추가합니다.

추가된 콤보박스는 아래처럼 보이게 될 겁니다. 어디에 클릭을 하느냐에 따라 위치는 다를 수 있습니다.

2. 목록추가

목록추가는 사용자 정의 폼을 불러올 때, 실행되어야 하기 때문에 사용자 정의 폼의 초기화 이벤트 프로시저를 설정합니다.

사용자 정의 폼을 선택해서, Initialize를 선택합니다.

이제 AddItem이나 List를 사용해서 항목을 추가해보겠습니다.

2-1. AddItem

AddItem는 아이템 하나하나를 추가하는 방법입니다. 아래와 같이 코드를 작성하면, 

Private Sub UserForm_Initialize()

    Me.ComboBox1.AddItem ("모든 값")
    Me.ComboBox1.AddItem ("정수")
    Me.ComboBox1.AddItem ("소수점")
    Me.ComboBox1.AddItem ("목록")
    Me.ComboBox1.AddItem ("날짜")
    Me.ComboBox1.AddItem ("시간")
    Me.ComboBox1.AddItem ("텍스트 길이")
    Me.ComboBox1.AddItem ("사용자 지정")
    
End Sub

 

순서대로 항목이 조회되는 것을 확인할 수 있습니다.

2-2. List

List는 여러 아이템을 하나의 배열 변수로 만들고, 해당 변수를 LIst에 할당하는 방법입니다.

아래와 같은 코드를 작성하면, 위 예제와 같은 결과를 얻을 수 있습니다.

Private Sub UserForm_Initialize()
    
    Dim arrayComboBox(8) As String
    
    arrayComboBox(0) = "모든 값"
    arrayComboBox(1) = "정수"
    arrayComboBox(2) = "소수점"
    arrayComboBox(3) = "목록"
    arrayComboBox(4) = "날짜"
    arrayComboBox(5) = "시간"
    arrayComboBox(6) = "텍스트 길이"
    arrayComboBox(7) = "사용자 지정"
    
    Me.ComboBox1.List = arrayComboBox
    
End Sub

3. 초기값 설정. ListIndex

ListIndex는 콤보박스가 가지고 있는 항목 중 하나를 미리 보여줍니다.

첫 번째 값은 0부터 시작하니 전체 항목 개수의 -1까지 움직입니다.

데이터 유효성과 동일하게 "모든 값"을 먼저 보여주도록 하겠습니다.

Private Sub UserForm_Initialize()
    
    Dim arrayComboBox(8) As String
    
    arrayComboBox(0) = "모든 값"
    arrayComboBox(1) = "정수"
    arrayComboBox(2) = "소수점"
    arrayComboBox(3) = "목록"
    arrayComboBox(4) = "날짜"
    arrayComboBox(5) = "시간"
    arrayComboBox(6) = "텍스트 길이"
    arrayComboBox(7) = "사용자 지정"
    
    Me.ComboBox1.List = arrayComboBox
    Me.ComboBox1.ListIndex = 0
    
End Sub

위와 같이 ListIndex 속성을 0으로 설정하면, 사용자 정의 폼 실행 시 "모든 값"으로 설정되어 있는 것을 확인할 수 있습니다.

 

반응형