본문 바로가기

엑셀VBA

[엑셀VBA] 스핀 단추(SpinButton) 초기값, 최소값, 최대값, 간격 설정

반응형

[엑셀VBA] 스핀 단추(Spin Button) 초기값, 최소값, 최대값, 간격 설정

안녕하세요 춤추는초코칩입니다.

엑셀 셀 서식 창을 보면, 소수 자릿수를 설정할 때, 버튼을 위아래로 클릭! 클릭! 합니다. 이 버튼을 스핀 단추(Spin Button)라고 합니다. 스핀 버튼 혹은 단추는 정해진 범위 안에 숫자를 입력하게 하는 도구로 사용자 편의를 제공하고 있습니다. 오늘은 스핀 단추를 만들어 보겠습니다.

 

1. 스핀 단추(Spin Button) 추가하기

우선, 삽입에서 사용자 정의 폼을 추가합니다.

사용자 정의 폼에서 스핀 단추를 추가합니다.

추가된 스핀 단추는 아래와 같습니다. 스핀 단추는 단독으로 사용하기 힘들기 때문에, 텍스트 상자도 추가했습니다.

추가된 텍스트 상자와 스핀 단추의 이름은 각각 TextBox1, SpinButton1입니다. 이름은 임의로 변경이 가능하지만, 따라하실 수 있도록 기본 값을 사용하도록 하겠습니다.

 

2. 텍스트 상자와 스핀 단추 연결

스핀 단추의 기능은 화살표의 방향에 따라 값이 증가하거나 감소하는데 있습니다. 텍스트 상자는 그 값을 보여주는 기능을 하므로, 두개의 컨트롤을 서로 연결해야 합니다. 바로, 스핀 단추의 값을 텍스트 상자의 값에 입력하는 이벤트입니다. 이 이벤트는 스핀 단추의 값이 변경되었을 때, 발생하도록 합니다. 사용자 정의 폼에 SpinButton1을 더블클릭하고, Change 이벤트를 클릭합니다.

 

스핀 단추의 값을 텍스트 상자에 할당하는 코드는 아래와 같습니다.

Private Sub SpinButton1_Change()
    TextBox1.Value = SpinButton1.Value
End Sub

실행된 사용자 정의 폼을 보면, 처음에는 값이 없다가 위쪽 화살표 버튼을 클릭하면 1, 2, 3으로 증가하고 아래쪽 화살표 버튼을 클릭하면 2, 1, 0으로 감소하는 것을 확인할 수 있습니다. 그럼 처음에는 왜 값이 없을까요? 그리고 버튼을 누르면 왜 1로 증가했을까요?

 

3. 초기값, 최소값, 최대값, 간격 정의

사용자 정의 폼을 실행했을 때, 텍스트 상자에는 왜 값이 없었을 까요? 그건, 텍스트 상자에 값을 입력하지 않았기 때문입니다. 텍스트 상자의 값을 변경하는 이벤트는 스핀 단추의 값이 변경되었을 때입니다. 사용자 정의 폼을 처음 실행 할 때에는 스핀 단추의 값이 변경되지 않았기 때문에 텍스트 상자의 값도 없는 것입니다.

그럼 스핀 단추를 처음 클릭했을 때, 왜 1로 바뀌었을까요? 그건, 스핀 단추의 초기값은 0이며, 간격은 1이기 때문입니다. 사용자 정의 폼에서 스핀 단추를 선택하면, 왼쪽 하단에 속성창이 있습니다. 속성창의 기본값을 보면, 최대값 Max는 100이고, 최소값 Min은 0, 간격 SmallChange는 1, 값 Value는 0인 것을 확인할 수 있습니다. 

이렇게 속성창에서 값을 변경해주거나 사용자 정의 폼의 초기값을 설정해주시면 됩니다. 사용자 정의 폼을 더블클릭하고, Initialize 이벤트를 선택합니다.

최대값은 100, 최소값은 -100, 간격은 10이 되도록 설정하고, 텍스트 상자의 값도 스핀 단추와 동일하게 설정하겠습니다.

Private Sub UserForm_Initialize()
    Me.SpinButton1.Max = 100
    Me.SpinButton1.Min = -100
    Me.SpinButton1.SmallChange = 10
    Me.TextBox1.Value = SpinButton1.Value
End Sub

이렇게 설정된 사용자 정의 폼은 아래와 같이 실행됩니다. 스핀 단추를 클릭하면, 1씩 변경된 것이 10씩 변경되는 것을 확인할 수 있습니다. 

 

반응형