-
Excel 매크로 (VBA) - 012. 스핀단추 컨트롤(스피너, Excel Form vs. ActiveX)Excel/Excel 매크로 2022. 9. 1. 21:40728x90
전체 목차
- 001. 특정 행을 복사하여 삽입하기
- 002. 선택하여 붙여 넣기 기능 정리
- 003. 변수/Assignment/Loop/비교
- 004. 데이터가 있는 셀의 범위 알아내기
- 005. 데이터 시트(쉘) 순회하기
- 006. 셀 병합 하기
- 007. 변수에 저장되어 있는 데이터 확인하기 (디버그 기능)
- 008. 정렬하기 (Sort)
- 009. 버튼 컨트롤 (Excel Form vs. ActiveX)
- 010. 콤보 상자 컨트롤 (Excel Form vs. ActiveX)
- 011. 확인란/옵션단추 컨트롤(Excel Form vs. ActiveX)
포스트 목차
01. 컨트롤 삽입
02. 컨트롤 속성 및 설정 변경
03. 이벤트 처리
04. VBA에서 접근하기
05. 예제
본 포스트에서는 엑셀에서 제공하는 폼 컨트롤(양식 컨트롤)과 ActiveX컨트롤의 스핀단추(스피너)를 엑셀 시트에 삽입해보고 둘의 차이점에 대해서 다루려고 한다.
01. 컨트롤 삽입
개발도구>삽입>양식 컨트롤>스핀 단추(양식컨트롤) 개발도구>삽입>ActiveX컨트롤>스핀 단추(ActiveX 컨트롤) 드래그를 이용하여 추가할 수 있으며, 초기이름은 "회전자" + 숫자의 조합, "SpinButton" + 숫자의 조합이다.
02. 컨트롤 속성 및 설정 변경
이 컨트롤은 스핀단추 or 회전자 or 스핀버튼으로 불리고 있으며, 고유의 카운터값을 가지고있다. 위 화살표를 누르면 그 값이 증가하며, 아래 화살표를 누르면 감소한다. 증가/감소의 양(증분)은 미리 정할 수 있으며, 최대값, 최소값 또한 정할 수 있다.
1) 스핀단추(양식컨트롤)
주요 속성에 대해서만 알아보면 컨트롤 서식(컨트롤 선택 > 우클릭 > 컨트롤 서식)에서 현재값, 최소값, 최대값, 증분, 셀연결(현재값을 특정셀에 표기)를 정할 수 있다.
2) 스핀단추(ActiveX컨트롤)
주요 속성에 대해서만 알아보면 속성(컨트롤 선택 > 우클릭 > 속성)에서 여러가지 값을 변경할 수 있다.
- LinkedCell: 연결된 셀
- Max: 최대값
- Min: 최소값
- SmallChange: 증분
- Value: 현재값
03. 이벤트 처리
버튼이 클릭되었을 때 특수처리를 하고 싶으면 다음과 같이 이벤트 처리루틴을 추가하면 된다.
1) 스핀단추(양식컨트롤)
디자인모드 > 컨트롤 선택 > 우클릭 > 매크로 지정
모듈이 추가되며 Sub 프로시저가 생성되는 것을 알 수 있다.
2) 스핀단추(ActiveX컨트롤)
디자인모드 > 컨트롤 선택 > 우클릭 > 코드 보기
Sheet 부분에 Sub 프로시저가 추가되는 것을 알 수 있으며, 다음과 같이 클릭 외에 다른 이벤트에 대해서도 이벤트 처리를 추가할 수 있다.
SpinUp, SpinDown 처럼 위화살표, 아래화살표에 별개로 이벤트 처리 루틴을 추가할 수 있다.
04. VBA에서 접근하기
VBA 코드 안에서 컨트롤에 저장된 값을 불러오거나, 컨트롤에 저장된 값을 바꿀때는 다음과 같이 접근할 수 있다.
스핀단추(양식컨트롤) 스핀단추(ActiveX컨트롤) [모듈 / Sheet 에 있는 Sub 프로시저 안에서]
- 값에 접근
ActiveSheet.Shapes("이름").ControlFomrat.Value
- 최대값에 접근
ActiveSheet.Shapes("이름").ControlFomrat.Max
- 최소값에 접근
ActiveSheet.Shapes("이름").ControlFomrat.Min
- 증분에 접근
ActiveSheet.Shapes("이름").ControlFomrat.SmallChange[Sheet 에 있는 Sub 프로시저 안에서]
- 값에 접근
이름.Value
- 최대값에 접근
이름.Max
- 최소값에 접근
이름.Min
- 증분에 접근
이름.SmallChange
[모듈에 있는 Sub 프로시저 안에서]
- 값에 접근
ActiveSheet.OLEObjects("이름").Object.Value
- 최대값에 접근
ActiveSheet.OLEObjects("이름").Object.Max
- 최소값에 접근
ActiveSheet.OLEObjects("이름").Object.Min
- 증분에 접근
ActiveSheet.OLEObjects("이름").Object.SmallChange05. 예제
예제의 조건)
- 셀 A1은 스핀단추(양식컨트롤)과 연결한다.
- 셀 A2는 스핀단추(ActiveX 컨트롤)과 연결한다.
- 셀 A3에는 500이라는 숫자를 입력해둔다
- 셀 A4에는 1000이라는 숫자를 입력해둔다.
- 스핀단추(양식컨트롤)은 최소값0, 최대값 30000, 증분1로 설정한다.)
- 스핀단추(ActiveX컨트롤)은 최소값0 최대값200, 증부2로 설정한다.)
- 스핀단추(ActiveX컨트롤)의 아래방향 화살표가 클릭되면 A4의 값을 1증가시키는 코드를 작성한다.
- 스핀단추(ActiveX컨트롤)의 위방향 화살표가 클릭되면 A3의 값을 1증가시키는 코드를 작성한다.
예제 해결)
디자인보기>ActiveX컨트롤 선택>코드보기를 이용하여 Sheet의 Sub 프로시저에 이벤트 처리 루틴을 추가한다.
1234567Private Sub SpinButton1_SpinDown()ActiveSheet.Cells(3, 1).Value = ActiveSheet.Cells(3, 1).Value + 1End SubPrivate Sub SpinButton1_SpinUp()ActiveSheet.Cells(4, 1).Value = ActiveSheet.Cells(4, 1).Value + 1End Subcs 컨트롤을 누르다보면 아래 그림처럼 컨트롤의 기본값과는 상관없이 A3, A4의 값들이 증가하는 것을 알 수 있다.
728x90'Excel > Excel 매크로' 카테고리의 다른 글
Excel 매크로 (VBA) - 014. 함수(function) (전편) (0) 2022.09.05 Excel 매크로 (VBA) - 013. 자동필터(Auto Filter) (2) 2022.09.02 Excel 매크로 (VBA) - 011. 확인란/옵션단추 컨트롤(Excel Form vs. ActiveX) (0) 2022.08.31 Excel 매크로 (VBA) - 010. 콤보 상자 컨트롤 (Excel Form vs. ActiveX) (2) 2022.08.29 Excel 매크로 (VBA) - 009. 버튼 컨트롤 (Excel Form vs. ActiveX ) (0) 2022.08.28