[ 들어가며 ]
영문판 엑셀은 체크박스를 넣으면,
셀 연결까지 자동으로 되는 것 같은데
한글판 엑셀은 자동으로 연결이 되지 않는 것 같아
간단한 VBA 코드를 만들어 보았습니다.
해당 코드는 아래와 같이 작동합니다.
1. 체크박스를 넣을 셀 범위를 선택한다.
2. VBA 코드를 실행시킨다.
3. 선택한 셀 범위에 체크박스가 표시되고
4. 셀 연결이 자동으로 된다.
5. 체크박스의 텍스트를 없애고,
6. TRUE와 FALSE로 표시되는 셀 값을 보이지 않게 한다.
아래 그림은 간단한 예시로 만든 것입니다.
체크박스를 체크하면 진행상태가 변화합니다.
여기서는 진행상태 부분은 제외하고
체크박스를 넣고 셀 연결까지 자동으로 하는 코드를
살펴보겠습니다.
[ 코드 작성하기 ]
먼저 기본적인 코드입니다.
Sub AddCheckBoxes()
Dim Rng As Range
Dim Cell As Range
Set Rng = Application.Selection
For Each Cell In Rng.Cells
Dim Chk As CheckBox
Set Chk = ActiveSheet.CheckBoxes.Add(Cell.Left, Cell.Top, Cell.Width, Cell.Height)
Chk.LinkedCell = Cell.Address
Next Cell
End Sub
코드를 보면
선택된 셀 범위를 [ Rng 변수 ]에 담습니다.
선택된 범위의 셀을 하나씩 선택하며
체크박스를 넣고
체크박스에 현재 셀의 주소를 연결합니다.
이 코드를 실행하면 다음과 같이 결과가 나타납니다.
체크박스를 만들면 나타나는
[ 확인란 00 ]을 지워야 겠습니다.
코드 한줄만 추가해주시면 됩니다.
Chk.Text = ""
아래는 전체 코드입니다.
Sub AddCheckBoxes()
Dim Rng As Range
Dim Cell As Range
Set Rng = Application.Selection
For Each Cell In Rng.Cells
Dim Chk As CheckBox
Set Chk = ActiveSheet.CheckBoxes.Add(Cell.Left, Cell.Top, Cell.Width, Cell.Height)
Chk.LinkedCell = Cell.Address
Chk.Text = ""
Next Cell
End Sub
이 코드를 실행하면 다음과 같이 결과가 나타납니다.
여기서 체크박스를 가능하면 셀 중앙에 위치시키고 싶었습니다.
그래서 체크박스의 위치를 조정하였습니다.
아래 코드를 추가하면 됩니다.
각 줄의 맨 뒤에 있는 숫자를 변경해가며
체크박스가 셀의 중앙에 오도록 조절합니다.
Chk.Height = Cell.Height * 0.6
Chk.Width = Cell.Width * 0.6
Chk.Top = Cell.Top + (Cell.Height - Chk.Height) / 2
Chk.Left = Cell.Left + (Cell.Width - Chk.Width) / 1.1
다음은 전체 코드입니다.
Sub AddCheckBoxes()
Dim Rng As Range
Dim Cell As Range
Set Rng = Application.Selection
For Each Cell In Rng.Cells
Dim Chk As CheckBox
Set Chk = ActiveSheet.CheckBoxes.Add(Cell.Left, Cell.Top, Cell.Width, Cell.Height)
Chk.LinkedCell = Cell.Address
Chk.Text = ""
Chk.Height = Cell.Height * 0.6
Chk.Width = Cell.Width * 0.6
Chk.Top = Cell.Top + (Cell.Height - Chk.Height) / 2
Chk.Left = Cell.Left + (Cell.Width - Chk.Width) / 1.1
Next Cell
End Sub
이 코드를 실행하면
체크박스가 셀의 중앙에 위치하게 됩니다.
마지막으로 체크박스에 체크를 했을 때 나타나는
셀에 입력되는 값인 [ TRUE 와 FALSE ]를
보이지 않도록 하겠습니다.
보이지 않게 하는 방법은
셀 배경의 색과 글자의 색을 똑같이 만들면 됩니다.
다음 코드 한줄을 추가하시면 됩니다.
Cell.Font.Color = Chk.Interior.Color
다음은 체크박스의 초기값을 설정하는 코드입니다.
초기값을 설정하지 않으면
TRUE 도 FALSE 도 아닌 값이 비어있는 상태가 됩니다.
Chk.Value = False
다음은 완성된 전체코드입니다.
Sub AddCheckBoxes()
Dim Rng As Range
Dim Cell As Range
Set Rng = Application.Selection
For Each Cell In Rng.Cells
Dim Chk As CheckBox
Set Chk = ActiveSheet.CheckBoxes.Add(Cell.Left, Cell.Top, Cell.Width, Cell.Height)
Chk.LinkedCell = Cell.Address
Chk.Text = ""
Chk.Value = False
Chk.Height = Cell.Height * 0.6
Chk.Width = Cell.Width * 0.6
Chk.Top = Cell.Top + (Cell.Height - Chk.Height) / 2
Chk.Left = Cell.Left + (Cell.Width - Chk.Width) / 1.1
Cell.Font.Color = Chk.Interior.Color
Next Cell
End Sub
이제 위 코드를 실행하면
체크박스는 셀의 중앙에 위치하고
체크를 하면 [ TRUE ] 값을 가지게 되나
그 값이 보이지는 않게 됩니다.
해당 코드는 체크박스를 자주 사용하시는 분께는 유용할 것입니다.
체크박스 지우는 코드는 아래 링크를 참고하시면 됩니다.
[EXCEL VBA] - [ 엑셀 VBA ] 체크 박스 삭제하기 : VBA 체크 박스 생성 및 삭제 자동화
여기를 방문하시면 더 많은 엑셀 관련 자료를 확인할 수 있습니다.
'EXCEL VBA' 카테고리의 다른 글
엑셀 VBA 윤년을 확인하는 사용자 정의함수 만들기 (0) | 2024.01.02 |
---|---|
매크로 기록하기, 절대참조 기록하기와 상대참조 기록하기 (0) | 2023.12.05 |
엑셀 열 너비 자동으로 맞추기, 입력할때마다 열 너비 자동으로 맞추기 (0) | 2023.11.24 |
엑셀 VBA InputBox로 셀 범위 선택하고 값 채우기 (0) | 2023.10.31 |
엑셀 VBA 폴더 내 파일이름 확인하기, DIR 함수, DIR() (0) | 2023.10.15 |