Skip to main content

Excel에서 그룹 내 하나의 체크박스만 선택되도록 허용하려면 어떻게 해야 합니까?

Author: Siluvia Last Modified: 2025-08-06

아래 스크린샷에 표시된 바와 같이, 행 2에 나열된 체크박스 그룹에서 하나의 체크박스를 선택하거나 체크하면 다른 모든 체크박스가 자동으로 비활성화됩니다. 이를 어떻게 달성할 수 있을까요? 이 문서의 VBA 코드가 도움이 될 수 있습니다.

A screenshot of a group of checkboxes in Excel where only one can be selected at a time

VBA 코드로 하나의 체크박스만 선택 가능하게 만들기


VBA 코드로 하나의 체크박스만 선택 가능하게 만들기

아래 VBA 코드를 실행하여 체크박스 그룹에서 한 번에 하나의 체크박스만 선택할 수 있습니다. 아래 단계를 따르세요.

1. 먼저 필요에 따라 체크박스를 삽입하세요. 여기서는 다음 스크린샷에 표시된 대로 ActiveX 컨트롤 체크박스를 삽입해야 합니다:

A screenshot showing the insertion of ActiveX Control checkboxes in Excel

2. 그런 다음 Alt + F11 키를 동시에 눌러 Microsoft Visual Basic for Applications 창을 엽니다.

3. 열린 Microsoft Visual Basic for Applications 창에서 삽입 > 클래스 모듈을 클릭합니다.

A screenshot showing the option to insert a Class Module in Excel VBA

4. 속성 창의 (이름) 상자에서 클래스 이름을 ClsChk로 변경하고, 아래 VBA 코드를 해당 코드 창에 복사하여 붙여넣습니다. 스크린샷 참조:

A screenshot of the Properties pane in VBA for renaming the class to ClsChk

VBA 코드 1: 한 번에 하나의 체크박스만 선택하기

Option Explicit
Public WithEvents Chk As MSForms.CheckBox
Private Sub Chk_Click()
Call SelOneCheckBox(Chk)
End Sub

Sub SelOneCheckBox(Target As Object)
Dim xObj As Object
Dim I As String
Dim n As Integer
If Target.Object.Value = True Then

    I = Right(Target.Name, Len(Target.Name) - 8)
    For n = 1 To ActiveSheet.OLEObjects.Count
      If n <> Int(I) Then
        Set xObj = ActiveSheet.OLEObjects.Item(n)
        xObj.Object.Value = False
        xObj.Object.Enabled = False
      End If
    Next
Else
    I = Right(Target.Name, Len(Target.Name) - 8)
    For n = 1 To ActiveSheet.OLEObjects.Count
      If n <> Int(I) Then
        Set xObj = ActiveSheet.OLEObjects.Item(n)
        xObj.Object.Enabled = True
      End If
    Next
End If
End Sub

5. 이제 삽입 > 모듈을 클릭한 후 아래 VBA 코드를 모듈 창에 복사하여 붙여넣습니다.

VBA 코드 2: 한 번에 하나의 체크박스만 선택하기

Dim xCollection As New Collection
Public Sub ClsChk_Init()
Dim xSht As Worksheet
Dim xObj As Object
Dim xChk As ClsChk
   Set xSht = ActiveSheet
   Set xCollection = Nothing
    For Each xObj In xSht.OLEObjects
        If xObj.Name Like "CheckBox**" Then
            Set xChk = New ClsChk
            Set xChk.Chk = CallByName(xSht, xObj.Name, VbGet)
            xCollection.Add xChk
        End If
    Next
    Set xChk = Nothing
End Sub

6. F5 키를 눌러 코드를 실행합니다.

이제부터 워크시트에서 체크박스 중 하나를 체크하면 다른 모든 체크박스가 자동으로 비활성화되며, 체크를 해제하여 모든 체크박스를 다시 활성화할 수 있습니다.

A screenshot of checkboxes in Excel where only one is enabled at a time after VBA code execution

참고: 새로운 체크박스가 체크박스 그룹에 추가되면 모든 체크박스를 다시 활성화하기 위해 VBA 코드를 다시 실행해야 합니다. 체크박스 그룹에서 체크박스를 삭제하는 경우에도 코드를 다시 실행해야 합니다.


관련 기사:

최고의 오피스 생산성 도구

🤖 Kutools AI Aide: 지능형 실행을 기반으로 데이터 분석 혁신 지능형 실행   |  코드 생성  |  사용자 정의 수식 생성  |  데이터 분석 및 차트 생성  |  Kutools Functions 호출
인기 기능: 중복 찾기, 강조 또는 중복 표시  |  빈 행 삭제  |  데이터 손실 없이 열 또는 셀 병합  |  반올림...
슈퍼 LOOKUP: 다중 조건 VLookup    다중 값 VLookup  |   다중 시트 조회   |   퍼지 매치 ....
고급 드롭다운 목록: 드롭다운 목록 신속 생성  |  의존형 드롭다운 목록  |  다중 선택 드롭다운 목록....
열 매니저: 지정 개수 열 추가  |  열 이동  |  숨겨진 열 표시 상태 전환 |  범위 및 열 비교 ...
주요 기능: 그리드 포커스  |  디자인 보기  |  향상된 수식 표시줄   통합 문서 & 시트 관리   |  자동 텍스트 라이브러리   |  날짜 선택기   |  데이터 병합   |  셀 암호화/해독   목록별 이메일 보내기  |  슈퍼 필터  |  특수 필터 (굵게/이탤릭/취소선 필터...)...
Top15 도구 세트12개 텍스트 도구(텍스트 추가, 특정 문자 삭제, ...)  |  50+ 차트 유형(간트 차트, ...)  |  40+ 실용 수식(생일을 기반으로 나이 계산, ...)  |  19개 삽입 도구(QR 코드 삽입, 경로에서 그림 삽입, ...)  |  12개 변환 도구(단어로 변환하기, 통화 변환, ...)  |  7개 병합 & 분할 도구(고급 행 병합, 셀 분할, ...)  |  ... 그리고 그 외
Kutools를 원하는 언어로 사용하세요 – 영어, 스페인어, 독일어, 프랑스어, 중국어 등40가지 이상의 언어를 지원합니다!

Kutools for Excel로 Excel 실력을 한 단계 업그레이드하고, 그 어떤 때보다 뛰어난 효율성을 경험하세요. Kutools for Excel은300개 이상의 고급 기능을 제공하여 생산성을 높이고 저장 시간을 줄여줍니다. 가장 필요한 기능을 지금 바로 확인하세요...


Office Tab이 오피스에 탭 인터페이스를 제공하여 작업을 훨씬 쉽게 만듭니다

  • Word, Excel, PowerPoint에서 탭 기반 편집과 읽기를 활성화합니다.
  • 여러 문서를 새 창이 아닌 동일한 창의 새 탭에서 열고 생성하세요.
  • 생산성이50% 향상되며, 매일 수백 번의 마우스 클릭을 줄일 수 있습니다!