Spin 컨트롤은 위 아래 버튼을 이용해서 숫자값을 지정할 때 많이 사용합니다. 스핀컨트롤의 위 아래 버튼을 클릭했을 때 추가한 텍스트 박스에 해당 값을 출력하는 예제를 만들어 보겠습니다. VBA 에서 지원하는 폼 컨트롤 중 하나인 스핀 컨트롤을 이용할 것입니다.
* 샘플 파일을 함께 올립니다. 공부하는데 참고하세요.
◎ 폼 과 컨트롤 추가하기 |
▼ 폼에 컨트롤을 올리기 위해서 비주얼베이직 에디터를 띄우겠습니다. 개발 도구 탭 > 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 컨트롤 사용하는 방법 |
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀 VBA 메시지박스 (MsgBox) 에 문자열 줄 바꿈을 적용하는 방법 (0) | 2023.07.09 |
---|---|
엑셀 VBA 각종 함수 사용법과 샘플 소스 쉽게 얻는 방법 (0) | 2023.07.09 |
엑셀 VBA 개발할 때 로그 출력하는 방법 (0) | 2023.07.08 |
엑셀 VBA 콤보 상자에 하나 혹은 여러 개의 열 추가하는 방법 (0) | 2023.07.08 |
엑셀 VBA 영역을 선택했을 때 이벤트 처리하기 (0) | 2023.07.02 |
엑셀 VBA 사용자 정의 폼에서 그림 표시와 셀에 추가하기 (0) | 2023.07.02 |
엑셀 VBA 무한 루프 빠져 나오거나 취소 기능 없애는 방법 (0) | 2023.06.29 |
엑셀 VBA 매크로 함수로 공백 제거하기, Trim, RTrim, LTrim 함수 이용 (0) | 2023.06.28 |