본문 바로가기
  • Welcome!
VBA Code

체크 박스 만들고 ,삭제 하기 / 전체 선택, 전체 해제 #2

by ToolBOX01 2022. 11. 2.
반응형

체크 박스를 만드는 샘플 코드 입니다

 

 

체크 박스 만들고 ,삭제 하기 / 전체 선택, 전체 해제 #1

1. 특정 cell에 체크 박스를 넣는 방법입니다. 캡션은 공란으로 표시 합니다. 캡션 값을 넣지 않으면 기본값이 표시 됩니다 Option Explicit Sub checkboxcreate01() Dim oCheckBox As CheckBox Set oCheckBox = ActiveSheet.Ch

tool-2020.tistory.com

 

체크 박스 만들고 ,삭제 하기 /   전체 선택, 전체 해제 #2는 이벤트를 처리 방법에 대한것을 배울수 있습니다. 

1. cell을 클릭 했을때 기호 "■"와 "□"를 전환 하는 방법

[ 엑셀 화면 ]

소스 코드

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Not Intersect(Target, [B10:B40]) Is Nothing Then
        
        If Target.Count < 0 Then: Exit Sub
     
        	If Target.Value = "□" Then Target.Value = "■" Else: Target.Value = "□"
    
    End If

End Sub

※ 주의 사항

반드시 SelectionChange 이벤트에서 코딩을 해야 합니다 

 

응용 코드

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
     Dim rng As Range
     Dim rn As Long
     Set rng = Range("B10", Cells(Rows.Count, "B").End(xlUp))
     rn = rng.Rows.Count

     If Not Intersect(Target, Range(Cells(10, "B"), Cells(10 + rn - 1, "B"))) Is Nothing Then
        
        If Target.Count < 0 Then: Exit Sub
           
            If Target.Value = "□" Then Target.Value = "■" Else: Target.Value = "□"
    
    End If
      
End Sub

 

 

VBA Intersect 함수는 아래 블로그를 참고 하십시요

 

 

IIf Intersect([A2:C2], [B:B]) Is Nothing Then

Intersect 메서드(method)는 수학시간에 배워서 알고 있듯 교집합을 의미 합니다. 즉 intersect 뒤에 오는 괄호안의 영역들의 서로 교차되어 겹쳐지는 영역을 지칭합니다. 사용 예제 코드 Sub Intersect01() I

tool-2020.tistory.com

 

2. 전체를 선택 또는 해제

소스 코드

Private Sub DrawingCHK_Click()

    If DrawingCHK.Value = True Then
        ActiveSheet.[B10:B40] = "■"
    Else
         ActiveSheet.[B10:B40] = "□" 
    End If
    
End Sub

 

프로그램 실행 예제

 

※ 주의 사항

반드시 Click 이벤트에서 코딩을 해야 합니다 

 

응용 코드

Private Sub FileCheck_Click()

         Dim rng As Range
         Dim rn As Long
         Set rng = Range("B10", Cells(Rows.Count, "B").End(xlUp))
         rn = rng.Rows.Count
        
        If FileCheck.Value = True Then
            
            ActiveSheet.Range(Cells(10, "B"), Cells(10 + rn - 1, "B")) = "■"
        
         Else
    
            ActiveSheet.Range(Cells(10, "B"), Cells(10 + rn - 1, "B")) = "□"
         
    End If

End Sub

 

보다 자세한 내용은 아래 동영상을 참고 합니다.