-
Excel 매크로 (VBA) - 011. 확인란/옵션단추 컨트롤(Excel Form vs. ActiveX)Excel/Excel 매크로 2022. 8. 31. 18:48728x90
전체 목차
- 001. 특정 행을 복사하여 삽입하기
- 002. 선택하여 붙여 넣기 기능 정리
- 003. 변수/Assignment/Loop/비교
- 004. 데이터가 있는 셀의 범위 알아내기
- 005. 데이터 시트(쉘) 순회하기
- 006. 셀 병합 하기
- 007. 변수에 저장되어 있는 데이터 확인하기 (디버그 기능)
- 008. 정렬하기 (Sort)
- 009. 버튼 컨트롤 (Excel Form vs. ActiveX)
- 010. 콤보 상자 컨트롤 (Excel Form vs. ActiveX)
포스트 목차
01. 컨트롤 삽입
02. 컨트롤 속성 및 설정 변경
03. 이벤트 처리
04. VBA에서 접근하기
본 포스트에서는 엑셀에서 제공하는 폼 컨트롤(양식 컨트롤)과 ActiveX컨트롤의 확인란 및 옵션단추를 엑셀 시트에 삽입해보고 둘의 차이점에 대해서 다루려고 한다.
01. 컨트롤 삽입
(1) 양식 컨트롤(Excel Form)
개발도구 > 삽입> 양식 컨트롤 > 확인란 개발도구 > 삽입> 양식 컨트롤 > 옵션단추
확인란
옵션 단추드래그를 이용하여 추가할 수 있으며, 초기이름은 "확인란" + 숫자의 조합, "옵션 단추" + 숫자의 조합이다.
(2) Active X 컨트롤
개발도구 > ActiveX 컨트롤 > 확인란 개발도구 > ActiveX 컨트롤 > 옵션단추
확인란
옵션 단추드래그를 이용하여 추가할 수 있으며, 초기이름은 "CheckBox" + 숫자의 조합, "OptionButton" + 숫자의 조합이다.
02. 컨트롤 속성 및 설정 변경
(1) 양식 컨트롤(Excel Form) - 확인란
디자인모드> 컨트롤 선택 > 우클릭 > 컨트롤 서식으로 서식을 설정할 수 있다.
채우기, 선색, 크기, 배율등을 설정할 수 있으며, 컨트롤 탭에서는 확인란의 상태를 설정할 수 있다.
확인란의 상태는 "선택하지 않은 상태", "선택한 상태", "혼합" 의 3가지 상태로 선택이 가능하다. 또한 셀 연결을 통해 확인란 컨트롤의 상태를 특정 셀에 표기하는 것이 가능하다. 다음과 같은 값으로 상태가 표기 된다.
선택하지 않은 상태 True 선택한 상태 False 혼합 #N/A (2) 양식 컨트롤(Excel Form) - 옵션단추
디자인모드> 컨트롤 선택 > 우클릭 > 컨트롤 서식으로 서식을 설정할 수 있다.
채우기, 선색, 크기, 배율등을 설정할 수 있으며, 컨트롤 탭에서는 옵션단추의 상태를 설정할 수 있다.
컨트롤 서식 > 컨트롤을 보면 옵션단추의 값은 "선택하지 않은 상태"와 "선택한 상태" 두 가지 상태로 나누어진다. 선택창과 옵션단추의 가장 큰 차이점은 옵션단추는 여러 옵션 단추중에 한 순간에 하나의 옵션단추만 "선택한 상태"가 될 수 있다는 것이다. 셀 연결을 통해서 옵션단추의 값을 특정 셀에 출력할 수 있는데, 그 셀에는 단추의 개별적인 상태가 출력되는 것이 아니고 몇번 째 옵션 단추가 선택되었느지가 표기된다.
예를 들어 다음과같이 4개의 옵션 단추가 시트에 삽입된 상태에서 셀 연결을 C9셀로 지정하면, 첫번째 옵션단추가 선택된 상태이므로 1이 입력되는 것을 확인할 수 있다.
- 옵션단추를 위한 그룹 상자
옵션 단추를 사용하는 이유는 사용자에게 여러 값 중 하나의 값만 선택을 받기 위해서이다. 그런데 경우에 따라 옵션 단추로 처리해야되는 데이터가 여러 개일 수 있을 것이다. 예를들어 성별 정보를 남/여 두 가지 값 중에 하나로 옵션 단추로 입력받고, 회원/비회원 여부도 옵션 단추로 입력받고 싶은 상황이 있다고 가정하자. 입력되는 옵션단추들을 그룹으로 구별할 필요가 있는데, 기본적으로 옵션단추는 시트에 귀속된다. 따라서 다른 구분을 짓기위해서는 그룹상자를 이용해야한다.
그룹상자는 개발도구> 삽입>그룹 상자(양식 컨트롤)로 추가할 수있다.
그룹 상자를 만든 후에 그 안에 옵션 단추를 삽입하면 기존에 시트에 귀속되어있는 옵선 단추들과는 값을 달리하게 된다.
위의 그림처럼 처음에 추가한 "옵션 단추 5", "옵션 단추 6", "옵션 단추 7" 그리고 나중에 추가는 되었지만 그룹상자 밖에 추가된 "옵션 단추 12"는 시트에 귀속되어 있어서 같은 값을 공유한다. 또한 "그룹상자 8"에 추가된 "옵션 단추 9", "옵션 단추 10", "옵션 단추 11"은 같은 값을 공유하지만 "옵션단추 5"가 속해 있는 그룹과는 다른 값을 같는다.
(3) ActiveX 컨트롤 - 확인란
이번에는 ActiveX 컨트롤의 확인란의 서식 및 속성에 대해 알아보자.
디자인모드 > 컨트롤 선택 >우클릭 > 컨트롤 서식으로 서식에 접근가능하다. 또한 디자인모드 > 컨트롤 선택 >우클릭> 속석으로 속성에 접근 가능하다.
엑셀 폼 컨트롤 보다는 더 많은 요소를 수정할 수있다.
(4) ActiveX 컨트롤 - 옵션단추
디자인모드 > 컨트롤 선택 >우클릭 > 컨트롤 서식으로 서식에 접근가능하다. 또한 디자인모드 > 컨트롤 선택 >우클릭> 속석으로 속성에 접근 가능하다.
옵션 단추의 속성을보면 GroupName 이라는 것이 있고 기본적으로 Sheet2 (현재 시트)가 적혀있는 것을 볼 수 있다. 이것을 다른 값으로 변경하면 그룹상자 컨트롤없이도 그룹화 하는 것이 가능하다.
03. 이벤트 처리
(1) 양식 컨트롤(Excel Form) - 확인란
확인란에서 발생할 수 있는 이벤트는 해당 체크 박스가 클릭되었을 때 일 것이다. 클릭이 발생했을 때의 처리를 매크로로 지정할 수 있다.
디자인모드 > 컨트롤 선택 > 우클릭 > 매크로 지정을 클릭하여 지정이 가능하며, 모듈 부분에 Sub 프로시저가 생성된다.
(2) 양식 컨트롤(Excel Form) - 옵션단추
옵션단추에서 발생할 수 있는 이벤트는 해당 옵션 단추가 클릭되었을 때 일 것이다. 클릭이 발생했을 때의 처리를 매크로로 지정할 수 있다. 디자인모드 > 컨트롤 선택 > 우클릭 > 매크로 지정을 클릭하여 지정이 가능하며, 모듈 부분에 Sub 프로시저가 생성된다.
(3) ActiveX 컨트롤 - 확인란
디자인모드 > 컨트롤 선택 > 우클릭 > 코드 보기에서 지정이 가능하며, Sheet 부분에 Sub 프로시저가 생성된다.
ActiveX 컨트롤의 경우 클릭 외에 다른 이벤트에 대한 처리도 쉽게 추가할 수 있다.
(4) ActiveX 컨트롤 - 옵션단추
디자인모드 > 컨트롤 선택 > 우클릭 > 코드 보기에서 지정이 가능하며, Sheet 부분에 Sub 프로시저가 생성된다.
ActiveX 컨트롤의 경우 클릭 외에 다른 이벤트에 대한 처리도 쉽게 추가할 수 있다.
04. VBA에서 접근하기
(1) 양식 컨트롤(Excel Form) - 확인란
- 값에 접근하기 (체크되었을 때:1 or 체크되지않았을 때: -4146)
ActiveSheet.Shapes("확인란 2").OLEFormat.Object.Value
또는
ActiveSheet.Shapes("확인란 2").ControlFormat.Value
- 텍스트에 접근하기
ActiveSheet.Shapes("확인란 2").OLEFormat.Object.Caption
(2) 양식 컨트롤(Excel Form) - 옵션단추
- 값에 접근하기 (체크되었을 때:1 or 체크되지않았을 때: -4146)
ActiveSheet.Shapes("옵션 단추 5").OLEFormat.Object.Value
또는
ActiveSheet.Shapes("옵션 단추 5").ControlFormat.Value
- 텍스트에 접근하기
ActiveSheet.Shapes("옵션 단추 5").OLEFormat.Object.Caption
(3) ActiveX 컨트롤 - 확인란
Sheet에 있는 Sub 프로시저 (이름으로 바로 접근)
- 값에 접근
CheckBox1.Value
- 텍스트에 접근
CheckBox1.Caption
모듈에 있는 Sub 프로시저
- 값에 접근
CheckBox1.Value
- 텍스트에 접근
CheckBox1.Caption
(4) ActiveX 컨트롤 - 옵션단추
Sheet에 있는 Sub 프로시저(이름으로 바로 접근)
- 값에 접근
ActiveSheet.OLEObjects("OptionButton3").Object.Value
- 텍스트에 접근
ActiveSheet.OLEObjects("OptionButton3").Object.Caption
모듈에 있는 Sub 프로시저
- 값에 접근
ActiveSheet.OLEObjects("CheckBox1").Object.Value
- 텍스트에 접근
ActiveSheet.OLEObjects("CheckBox1").Object.Caption
728x90'Excel > Excel 매크로' 카테고리의 다른 글
Excel 매크로 (VBA) - 013. 자동필터(Auto Filter) (2) 2022.09.02 Excel 매크로 (VBA) - 012. 스핀단추 컨트롤(스피너, Excel Form vs. ActiveX) (0) 2022.09.01 Excel 매크로 (VBA) - 010. 콤보 상자 컨트롤 (Excel Form vs. ActiveX) (2) 2022.08.29 Excel 매크로 (VBA) - 009. 버튼 컨트롤 (Excel Form vs. ActiveX ) (0) 2022.08.28 Excel 매크로 (VBA) - 008. 정렬하기 (Sort) (0) 2022.08.24