엑셀 양식을 만들때 흔히 많이 쓰는 컨트롤이 콤보상자(Combo Box) 입니다. 흔히 드롭다운(Drop Down) 박스라고 하기도 합니다.
개발도구에는 양식컨트롤과 ActiveX 컨트롤 2가지의 컨트롤이 있는데 그중에서 VBA를 잘 알지 못해도 흔히 사용하는 양식컨트롤의 콤보상자를 양식에 넣는 방법과 콤보상자의 입력범위가 추가되거나 줄어들때 자동으로 범위가 늘어났다 줄어드는 수식에 대해 설명 드립니다.
|
콤보상자(Combo Box) 삽입하기 |
1. 리본메뉴 [개발도구] - [삽입] - [양식컨트롤 콤보상자]를 선택합니다.
2. [콤보상자]를 넣고 싶은곳에 그려 넣습니다.
3. Alt키를 누르고 사각형을 그리면 셀의 모서리(교차점)에 정확하게 삽입 됩니다.
| 이름정의하기 |
품명을 콤보상자의 입력범위에 들어갈 셀범위를 이름정의 합니다.
이때 단순히 A2:A9를 입력하지 마시고 아래의 수식을 입력하세요. 셀범위만 입력하는 경우는 리스트가 추가되는 경우 다시 범위를 입력해야 합니다. 이런 번거러움을 줄이기 위해서 이름정의를 하여 동적(가변형) 셀범위를 만들어 줍니다.
1. 리본메뉴 [수식] - [이름정의]를 클릭합니다.
2. [새 이름] 창에 [이름]을 입력하고 [참조대상]에 아래의 수식을 입력합니다.
3. 수식 = OFFSET(Sheet1!$A$1,1,0,COUNTA(Sheet1!$A:$A)-1,1)
4. [확인] 버튼을 클릭하면 "품명"이라는 이름이 정의 됩니다.
☞ 수식설명
1. COUNTA 함수 : 품명이 있는 A열의 비어있지 않는 셀의 개수를 반환합니다. (주의 : A열 전체를 참조 할때는 A열에는 품명외 다른 값이 입력되면 안됨)
2. OFFSET 함수 : 참조영역 A1셀에서 행방향으로 1, 열방향으로 0 떨어진 위치에서 COUNTA - 1 만큼의 행수의 참조 범위를 반환 합니다.
3. A열에 품명이 추가되면 COUNTA 함수에 의해 참조 범위가 변합니다.
| 컨트롤 서식 설정 |
1. 이름정의 까지 완료 되었으면 콤보상자에 마우스를 대고 우측 클릭합니다.
2. [단축메뉴] 하단에 [컨트롤 서식]을 클릭합니다.
3. [컨트롤 서식] 창에서 [입력범위]에 이름정의 된 "품명"을 [셀 연결]에는 C1셀을 클릭합니다.
4. [셀 연결]은 콤보상자에서 목록(리스트)가 선택되었을때 선택 번호를 반환합니다.
5. [목록 표시 줄 수]는 콤보상자 우측의 역삼각형 버튼을 클릭했을때 나타나는 목록 개수 입니다.
동적(가변) 콤보상자 |
품명이 추가되면 콤보상자의 목록도 자동으로 추가되어 [입력 범위]를 수정할 필요가 없습니다.
| 셀 연결 값 |
1. 양식컨트롤의 콤보상자는 선택한 목록의 순번을 연결된 셀에 표시합니다.
2. 지정셀에 선택한 목록의 값을 나타내려면 INDEX 함수나 OFFSET 함수로 값을 반환 합니다.
3. 여기서는 INDEX 함수를 사용해서 수식 = INDEX(A:A,C1+1) 을 입력합니다.
뭔가 복잡합니다. 숫자(순번)를 반환하지 말고 선택 목록값을 나타내면 활용도가 더 높을 것 같은데 왜 이렇게 만들었을 까요? 다 이유가 있겠지만 잘 모르겠네요. ^^
| 관련글 보기 |
03 |
| 첨부파일 보기 |
'EXCEL > VBA' 카테고리의 다른 글
엑셀 콤보박스(ActiveX컨트롤)에 리스트 입력방법 (3) | 2017.02.04 |
---|---|
엑셀 MsgBox 활용하기 (0) | 2017.01.30 |
엑셀 InputBox 함수와 메소드의 차이(VBA 오류의 원인?) (0) | 2017.01.30 |
엑셀 연산자(VBA)의 종류 (0) | 2017.01.30 |
엑셀 VBA Editor 열고 코드 입력하기 (0) | 2016.12.24 |