Please Enable JavaScript!
Gon[ Enable JavaScript ]

엑셀 VBA 콤보 상자에 하나 혹은 여러 개의 열 추가하는 방법

엑셀(Excel)/VBA
반응형

보통 콤보 상자에 하나의 열만 추가할 수 있다고 생각하지만 VBA 의 콤보 상자는 여러 줄의 열 추가가 가능합니다. 어떻게 하나의 열과 여러 줄의 추가할 수 있는지 샘플을 통해 알아보겠습니다.

 

 

콤보 상자 추가하기

 

먼저 VBA 폼을 만들어서 콤보 상자 두 개를 추가해 보겠습니다. VBA 편집 창을 열고 오른쪽 마우스 > 삽입 > 사용자 정의 폼 메뉴를 선택합니다.

 

폼 화면이 뜨면 도구 상자에서 콤보 상자를 찾아 추가합니다.

 

추가한 콤보 상자의 속성 정보에서 이름을 확인합니다. 해당 이름은 소스에서 사용할 것이기 때문입니다.

 

다음은 콤보 상자에 값을 넣기 위한 코드 편집기로 이동합니다. 폼을 선택하고 오른쪽 마우스 > 코드 보기 메뉴를 선택합니다.

 

코드를 추가할 폼 함수는 폼이 생성될 때 호출하는 Initialize 로 합니다. 왼쪽 상자에서 UserForm 과 바로 옆 상자에서 Initialize 를 선택하면 자동으로 함수가 생성됩니다.

 

 ※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다.
엑셀 VBA 단위 변환 사용자 정의 만들기
엑셀 VBA 반복문을 이용해서 폼에 있는 전체 컨트롤 제어하기
엑셀 VBA 사용자 정의 폼에서 그림 표시와 셀에 추가하기
엑셀 VBA - 사용자정의 폼의 타이틀바에서 X 버튼 제어하기
셀 VBA 반복문으로 여러 컨트 한번에 제어하기



 

 

콤보 상자에 하나의 열 추가하기

 

폼 초기화 함수인 UserForm_Initialize() 에 아래 코드를 추가합니다. 콤보 상자에 하나의 열을 추가하는 함수는 AddItem 입니다. 마지막 ListIndex 속성은 콤보 상자가 처음 뜰 때 선택할 데이터의 인덱스 값을 가리킵니다. 0 이면 콤보 상자 목록에서 제일 상단에 데이터입니다.

 

Private Sub UserForm_Initialize()
 
    With Me.ComboBox1
        .AddItem "하나"
        .AddItem "두개"
        .AddItem "세개"
        .AddItem "네개"
        .AddItem "다섯"
        .ListIndex = 0
    End With
 
End Sub

 

소스가 제대로 작성되었는지 검증하기 위해 폼을 실행합니다. 툴 박스에서 사용자 정의 폼 실행 을 클릭합니다.

 

결과는 다음과 같습니다. AddItem 함수로 콤보 상자에 데이터를 성공적으로 추가했습니다.


 

 

 

콤보 상자에 두 개 이상의 열 추가하기

 

이제 2개 이상의 열을 추가하는 방법을 알아보겠습니다. 먼저 값을 넣기 전에 멀티 열 입력이 가능하도록 속성을 변경해야 합니다. 콤보 상자를 선택하고 왼쪽 사이드 속성창으로 이동합니다. 그리고 ColumnCount 를 열 개수만큼 숫자를 변경합니다. ColumnHeads True 로 하면 멀티 열에 타이틀 입력이 가능합니다.

 

소스는 다음과 같습니다. AddItem 코드 아래에 List 속성을 사용하여 두 번째 열에 값을 추가하는 코드를 넣습니다. ListCount 속성은 드롭다운 목록의 항목 수입니다. List 속성의 경우 행 및 열 수는 모두 0에서 시작합니다. List 속성의 첫 번째 인수는 행 번호, 두 번째가 열 번호입니다. ListCount 2 이므로 1을 빼면 List(1, 1) 이 됩니다. 이것은 두 번째 열을 뜻합니다. 첫 번째 열은 AddItem 으로 추가하고, 두 번째 열을 List 속성으로 추가합니다.

 

Private Sub UserForm_Initialize()
 
    With Me.ComboBox2
        .AddItem "1 1"
        .List(.ListCount - 1, 1) = "1 2"
   
        .AddItem "2 1"
        .List(.ListCount - 1, 1) = "2 2"
   
        .ListIndex = 0
    End With
   
End Sub

 

결과는 다음과 같습니다. 소스에 추가한 대로 1, 2열에 모두 데이터가 들어갔습니다.

 

 ※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다.
엑셀 VBA 단위 변환 사용자 정의 만들기
엑셀 VBA 반복문을 이용해서 폼에 있는 전체 컨트롤 제어하기
엑셀 VBA 사용자 정의 폼에서 그림 표시와 셀에 추가하기
엑셀 VBA - 사용자정의 폼의 타이틀바에서 X 버튼 제어하기
셀 VBA 반복문으로 여러 컨트 한번에 제어하기
반응형
Posted by 녹두장군

댓글을 달아 주세요