Please Enable JavaScript!
Gon[ Enable JavaScript ]

엑셀 VBA 스핀(Spin) 컨트롤 사용하기

엑셀(Excel)/VBA
반응형

Spin 컨트롤은 위 아래 버튼을 이용해서 숫자값을 지정할 때 많이 사용합니다. 스핀컨트롤의 위 아래 버튼을 클릭했을 때 추가한 텍스트 박스에 해당 값을 출력하는 예제를 만들어 보겠습니다. VBA 에서 지원하는 폼 컨트롤 중 하나인 스핀 컨트롤을 이용할 것입니다.

  

 

* 샘플 파일을 함께 올립니다. 공부하는데 참고하세요.

엑셀 VBA 스핀(Spin) 컨트롤 사용하기.xlsm
0.01MB

 

 

폼 과 컨트롤 추가하기

 

폼에 컨트롤을 올리기 위해서 비주얼베이직 에디터를 띄우겠습니다. 개발 도구 탭 > Visual Basic 리본 메뉴를 클릭합니다.

 

먼저 비주얼베이직 에디터에서 폼을 추가하겠습니다. 삽입 > 사용자 정의 폼 메뉴를 클릭합니다.

 

화면에 폼 이 나타나면 도구 상자에서 원하는 컨트롤을 끌어 추가합니다. 텍스트 박스와 스핀 컨트롤을 하나씩 입니다.

 

코드를 작성하기 전에 컨트롤을 가리키는 객체의 이름을 알아야 합니다. 각 컨트롤에서 제공하는 함수나 속성을 사용하기 위해 필요합니다. 컨트롤의 속성 정보에서 확인할 수 있습니다. 텍스트 상자는 TextBox1 입니다.

 

스핀컨트롤은 SpinButton1 입니다. 이름을 사용자 편이에 맞게 고칠 수 있지만 기본 세팅값으로 그대로 사용하겠습니다.

 

 ※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다.
엑셀 VBA 반복문으로 여러 컨트롤 한번에 제어하기
엑셀 VBA 옵션 버튼 OptionButton 컨트롤 사용하기
엑셀 VBA 체크 박스 CheckBox 컨트롤 사용하기
엑셀(Excel) VBA - 폼에 배치한 컨트롤 정렬하기
VBA 영역을 입력받는 RefEdit 컨트롤 사용하는 방법



 

 

코드 작성하기

 

이제 폼 위에 올라가 있는 텍스트 박스와 스핀 컨트롤을 제어하는 코드를 작성하겠습니다. 왼쪽 탐색기에서 폼을 선택하고 오른쪽 마우스 > 코드 보기 메뉴를 클릭합니다.

 

먼저 최초 폼이 뜰 때 실행되는 Initialize 에 스핀 컨트롤의 최대, 최소값을 세팅하는 코드를 작성하겠습니다. 상단 왼쪽 콤보박스에서 UserForm 과 바로 옆 콤보박스에서 Initialize 를 선택합니다. 이렇게 목록에서 이벤트 함수를 선택해서 함수를 만들 수 있습니다.

 

생성된 이벤트 함수 내부에 작성할 코드는 다음과 같습니다. 스핀컨트롤의 최소, 최대값을 0 100 으로 합니다. 텍스트 박스는 0 으로 세팅합니다.

 

다음은 스핀 컨트롤 값이 변경되었을 때 발생하는 이벤트를 추가합니다. 상단 콤보박스에서 SpinButton1 Change 를 선택합니다.

 

Change 이벤트 함수에 들어갈 코드는 간단합니다. 스핀 컨트롤 값을 텍스트 박스에 추가하는 것입니다.

 

추가로 스핀 컨트롤 화살표의 위 아래를 클릭했을 때 변경할 값의 크기를 사용자가 지정할 수 있는 함수가 있습니다. 바로 SpinDown SpinUp 입니다. Change 함수는  값을 변경하는 경우 증감이 +- 1 만 가능합니다. 사용자가 원하는 값을 올리거나 내리고 싶다면 SpinDown SpinUp 을 사용해야 합니다. 콤보박스에서 각 이벤트 함수를 추가합니다.

 

▼ 코드는 다음과 같습니다. 표시한 값을 변경하면 증감을 사용자가 원하는 만큼 바꿀 수 있습니다.


 

 

 

실행 및 확인

 

지금까지 작성한 폼이 제대로 동작하는지 확인해 보겠습니다. 실행은 간단합니다. 상단 툴바에서 실행 버튼을 클릭합니다. 단축키는 F5 입니다.

 

스핀 컨트롤을 클릭해 보세요. 기존 1 씩 변경되던 것이 10 단위로 바뀔 겁니다. SpinDown SpinUp 이벤트 함수를 제거하고 Change 로 바꾸면 다시 증감을 1로 변경할 수 있습니다.

 

 ※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다.
엑셀 VBA 반복문으로 여러 컨트롤 한번에 제어하기
엑셀 VBA 옵션 버튼 OptionButton 컨트롤 사용하기
엑셀 VBA 체크 박스 CheckBox 컨트롤 사용하기
엑셀(Excel) VBA - 폼에 배치한 컨트롤 정렬하기
VBA 영역을 입력받는 RefEdit 컨트롤 사용하는 방법
반응형
Posted by 녹두장군

댓글을 달아 주세요