본문 바로가기
  • Welcome!
VBA Code

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

by ToolBOX01 2022. 10. 11.
반응형

1. 특정 cell에 체크 박스를 넣는 방법입니다. 캡션은 공란으로 표시 합니다. 캡션 값을 넣지 않으면 기본값이 표시 됩니다

Option Explicit
Sub checkboxcreate01()

    Dim oCheckBox As CheckBox
        Set oCheckBox = ActiveSheet.CheckBoxes.Add(Left:=Range("B10").Left, _
            Top:=Range("B10").Top, Width:=Range("B10").Width, Height:=Range("B10").Height)
    
    With oCheckBox
       .Caption = ""
    End With

End Sub

 

2. cell A에 넘버링을 하고 cell B 에 체크 박스 넣기

Option Explicit
Sub checkboxcreate02()

Dim i As Long
Dim Ocheckbox As CheckBox

For i = 0 To 9
    Cells(i + 1, "A") = i + 1
    
        Set Ocheckbox = ActiveSheet.CheckBoxes.Add(Left:=Cells(i + 1, "B").Left, _
            Top:=Cells(i + 1, "B").Top, Width:=Cells(i + 1, "B").Width, Height:=Cells(i + 1, "B").Height)
    
    With Ocheckbox
        .Caption = ""
    End With

Next i

End Sub

 

3. 체크 박스 전체를 삭제 하기

Sub checkboxDelete03()
  Dim Ocheckbox As CheckBox
            For Each Ocheckbox In ActiveSheet.CheckBoxes           
                    Ocheckbox.Delete
            Next Ocheckbox
End Sub

 

4. 특정 cell들만 삭제 하는 방법

Option Explicit
Sub CheckBoxDelete02()
    
     Dim rng As Range
     Dim rn, i As Long
     
     Set rng = ActiveSheet.Range("B10", Cells(Rows.Count, "B").End(xlUp))
    
     For i = 0 To rng.Count - 1
             
        DeleteCheckBoxes ActiveSheet.Cells(i + 10, "B")
        
     Next i

End Sub
Sub DeleteCheckBoxes(Target As Range)

    Dim Cbx As CheckBox
    For Each Cbx In Target.Parent.CheckBoxes 'loop through all CheckBoxes on the worksheet
        If Not Intersect(Cbx.TopLeftCell, Target) Is Nothing Then
            Cbx.Delete 'delete it if it intersects with the target range
        End If
    Next Cbx
End Sub

 

☞ Range  함수

 

엑셀 VBA(16): Range 총정리

엑셀 VBA 강의를 계속 하도록 하겠습니다. 지속적으로 강조해 드린대로 엑셀 VBA에서 가장 중요한 개...

blog.naver.com

 

체크 박스를 생성 합니다.
체크 박스를 선택하면, 체크 표시와 함께, 노랑색 으로 표시 됩니다.

Option Explicit
Sub checkboxcreate05()

On Error Resume Next
    Dim c As Range, myRange As Range
    Dim celltext As String: Set myRange = Selection

    For Each c In myRange.Cells
        celltext = c.Text

        '셀에 있는 텍스트를 임시로 보관한다.
        ActiveSheet.CheckBoxes.Add(c.Left, c.Top, c.Width, c.Height).Select

        '체크박스를 추가한다. 좌표와 높이, 폭은 셀의 크기대로 설정한다.
        With Selection
            .LinkedCell = c.Address
            .Characters.Text = ""
            .Name = c.Address
            .Characters.Text = celltext

        '체크박스의 텍스트를 본래 셀에 있던 텍스트로 한다.
        End With
        
        c.Select
        With Selection
            .FormatConditions.Delete
            .FormatConditions.Add Type:=xlExpression, _
                Formula1:="=" & c.Address & "=TRUE"
            .FormatConditions(1).Font.ColorIndex = 6 'change for other color when ticked
            .FormatConditions(1).Interior.ColorIndex = 6 'change for other color when ticked
            .Font.ColorIndex = 2 'cell background color = White

                '셀에 조건부서식을 설정
        End With
 Next
 
 myRange.Select
End Sub