본문 바로가기

엑셀/VBA

엑셀 VBA 옵션 선택 컨트롤 - CheckBox, OptionButton

반응형

이전 글에서 텍스트 상자(TextBox)에 대해 알아보았습니다. 이번에는 열거된 선택사항들 중에서 선택을 할 때 사용하는 확인란(CheckBox)과 옵션 단추(OptionButton)에 대해 알아보겠습니다.

 

엑셀 VBA 텍스트 상자(TextBox) 컨트롤 사용하기

 

엑셀 VBA 텍스트 상자(TextBox) 컨트롤 사용하기

이전 글에서 UserForm에 대해 알아보았습니다. 이번에는 UserForm을 구성할 때 사용할 수 있는 텍스트 상자(TextBox) 컨트롤에 대해 알아보겠습니다. 엑셀 VBA UserForm 만들기 및 화면에 출력하기 엑셀 VBA

mr-johndoe.tistory.com

 

1. 확인란(CheckBox)

  여러 선택 사항들을 열거하고 필요한 사항을 선택하여 사용할 수 있습니다. 확인란(CheckBox) 컨트롤은 열거된 사항들 중에서 필요한 사항을 여러 개 선택이 가능합니다.

즉, 열거된 사항들 하나하나 개별적으로 동작한다는 의미입니다.

 

 

 

 

 

사용자 정의 폼의 도구 상자에서 확인란(CheckBox)은 [그림 1]에 빨간색 사각형으로 표시한 컨트롤입니다.

 

도구상자-CheckBox
[그림 1] 도구 상자 - CheckBox

 

2. 옵션 단추(OptionButton)

  옵션 단추(OptionButton) 컨트롤은 여러 선택 사항들을 열거하고 원하는 사항을 선택하여 사용할 수 있는데 확인란(CheckBox) 컨트롤과는 달리 하나의 사항만 선택할 수 있습니다.

그러므로, 옵션 단추 컨트롤을 사용할 때는 그룹별로 묶어서 관리를 해야합니다. 이렇게 그룹으로 묶어 사용할 때 프레임(Frame) 컨트롤을 사용합니다.

 

사용자 정의 폼의 도구 상자에서 옵션 단추(OptionButton)는 [그림 2]에 빨간색 사각형으로 표시한 컨트롤입니다.

 

도구상자-OptionButton
[그림 2] 도구 상자 - OptionButton

 

3. 예제를 통해 확인

  엑셀을 여시고 엑셀 시트에 ActiveX 컨트롤의 명령 단추 하나를 생성하고 VBE 창을 엽니다.

사용자 정의 폼을 하나 생성하고 [그림 3]과 같이 작성합니다.

 

UserForm-입력
[그림 3] 사용자 정의 폼 - 입력

프레임은 사용자 정의 폼의 도구 상자에서 선택 가능하며 속성의 Caption에 이름을 입력할 수 있습니다.

버튼 2개를 하단에 생성한 후 하나는 '확인'으로 나머지 하나는 '취소'로 명명합니다.

 

 

 

 

확인 버튼을 더블클릭하고 출력된 코드창에 다음과 같이 코드를 작성합니다.

 

   Private Sub CommandButton1_Click()

      Range("B2:I3").Value = ""

 

      Range("B2").Value = "성명"

      Range("C2").Value = "성별"

      Range("D2").Value = "C / C++"

      Range("E2").Value = "C#"

      Range("F2").Value = "JAVA"

      Range("G2").Value = "Visual Basic"

      Range("H2").Value = "Python"

      Range("I2").Value = "기타"

 

      Range("B3").Value = TextBox1.Value

 

      If OptionButton1.Value = True Then

         Range("C3").Value = "남"

      ElseIf OptionButton2.Value = True Then

         Range("C3").Value = "여"

      Else

         MsgBox ("성별을 선택해 주세요.")

      End If

 

      If CheckBox1.Value = True Then

         Range("D3").Value = "v"

      End If

 

      If CheckBox2.Value = True Then

         Range("F3").Value = "v"

      End If

 

      If CheckBox3.Value = True Then

         Range("H3").Value = "v"

      End If

 

      If CheckBox4.Value = True Then

         Range("E3").Value = "v"

      End If

 

      If CheckBox5.Value = True Then

         Range("G3").Value = "v"

      End If

 

      If CheckBox6.Value = True Then

         Range("I3").Value = "v"

      End If

 

      Unload UserForm1

   End Sub

 

위의 코드에서 옵션 단추에 대한 코드는 다음과 같이 코딩하였습니다.

 

      If OptionButton1.Value = True Then

         Range("C3").Value = "남"

: OptionButton1은 성별 프레임에서 '남' 앞에 있는 옵션 단추입니다. OptionButton1이 선택되면 값은 True가 되며 이때 C3 셀에 '남'이라고 입력하도록 코딩하였습니다.

 

      ElseIf OptionButton2.Value = True Then

         Range("C3").Value = "여"

OptionButton2는 성별 프레임에서 '여' 앞에 있는 옵션 단추를 말하며 위의 OptionButton1과 동일한 동작을 합니다.

 

      Else

         MsgBox ("성별을 선택해 주세요.")

      End If

: 옵션 단추를 아무것도 선택하지 않은 경우로 메시지 창이 출력되도록 코딩하였습니다.

 

확인란 컨트롤의 경우에는 개별적으로 동작하기 때문에 각각의 확인란 컨트롤의 값을 확인하는 If을 작성하였습니다.

 

다음 취소 버튼을 더블 클릭하고 다음 코드를 코드 창에 입력합니다.

 

   Private Sub CommandButton2_Click()

      UserForm1.Hide

   End Sub

 

엑셀 시트에 생성한 버튼을 더블클릭하여 코드창을 열고 다음과 같이 코드를 작성합니다.

 

   Private Sub CommandButton1_Click()

      UserForm1.Show

   End Sub

 

반응형