안녕하십니까 춤추는초코칩입니다.
엑셀을 사용하다 보면, 다양한 창이 팝업 됩니다. 이렇게 팝업 된 창을 대화상자라고 합니다.
엑셀에서 데이터탭에 데이터유효성검사라는게 있습니다. 이 것도 하나의 대화상자입니다.
이런 대화상자를 "유저 폼"이라고도 불리는 "사용자 정의 폼"을 통해 만들 수 있습니다.
오늘은 사용자 정의 폼에서 사용할 수 있는 컨트롤 중에서, 콤보박스(혹은 콤보상자)에 대해 알아보겠습니다.
콤보박스는 아래와 같이, 여러 항목 중에서 하나의 항목을 선택하는 기능을 합니다. 데이터 유효성을 보시면 제한 대상이 모든 값부터 사용자 지정까지 있는데, 이 중에 하나를 선택할 수 있습니다.
오늘은 위 예제와 동일한 기능을 하는 콤보박스를 만들어 보겠습니다.
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으로 설정하면, 사용자 정의 폼 실행 시 "모든 값"으로 설정되어 있는 것을 확인할 수 있습니다.
'엑셀VBA' 카테고리의 다른 글
[엑셀VBA] 사용자 정의 폼 사용 시, 시트 활성화 모달리스 modaless (0) | 2022.11.28 |
---|---|
[엑셀VBA] 체크박스(확인란) 사용하기 Checkbox (0) | 2022.11.27 |
[엑셀VBA] 리스트박스에 항목(목록) 추가하기 Listbox (0) | 2022.11.26 |
[엑셀VBA] 셀 삭제하기 clear, delete (0) | 2022.11.24 |
[엑셀VBA] select, activate 시트 이동하기 (0) | 2022.11.02 |