Alt+F11을 눌러 VBA를 열고 진행할 시트를 선택해준다(나는 sheet1에서 진행)
(일반) 메뉴에서 Worksheet, (선언) 메뉴에서 SelectionChange를 선택해준다
이렇게 Target을 매개변수로 받는 함수가 바로 만들어진다
SelectionChange는 말 그대로 선택한 셀이 변경되었을 때 진행되는 매크로이고, Target은 선택된 셀을 뜻한다
결론부터 말하면, 저 안에 아래 코드를 그대로 쓰면 된다
If Target.Cells.count > 1 Then
Exit Sub
Else
r = Target.Row
c = Target.Column
Union(Cells(r,c).Offset(-1,-1).Resize(1,3), Cells(r,c).Offset(1,-1).Resize(1,3), Cells(r,c).Offset(0,-1), Cells(r,c).Offset(0,1)).Select
Selection.Value = 1
End If
이렇게 하고 VBA를 종료한 후, 아무 셀이나 선택해보면
선택된 셀 주위로 1이란 값이 들어간 걸 확인할 수 있다
<코드 설명>
일단 여러 셀이 한꺼번에 선택된 경우엔 진행하지 않기 위해 if문을 작성한다
Target.Cells.count(선택된 셀의 개수)가 1을 초과하면 해당 매크로를 종료한다
그렇지 않은 경우, Target의 Row와 Column 정보를 r과 c라는 변수로 받는다
Union(Cells(r,c).Offset(-1,-1).Resize(1,3), Cells(r,c).Offset(1,-1).Resize(1,3), Cells(r,c).Offset(0,-1), Cells(r,c).Offset(0,1))
파란색부분만 설명해보면 Cells(r,c) 즉 선택된 셀에서 Offset(-1,-1)=위로 한칸 왼쪽으로 한칸 간 다음 Resize(1, 3)=1x3짜리 셀을 선택한다는 뜻이다
그래서 결국 선택된 셀 기준으로 왼쪽 위 대각선, 위, 오른쪽 위 대각선 칸을 선택하게 된다
빨간색은 아래 3칸, 주황색은 왼쪽 1칸, 초록색은 오른쪽 1칸을 뜻하게 되어 이들을 다 합쳐서(Union) 선택(Select)한 다음 Selction의 Value를 1로 설정해주면 주변 8칸이 모두 1로 바뀌게 된다
'공부 > 기타' 카테고리의 다른 글
[Chaos Engineering] 카오스 엔지니어링 in AWS (1) | 2020.12.21 |
---|---|
[Pub/Sub] Publish/Subscribe 구조(모델) (0) | 2020.12.11 |
[APM] 직원 월급 관리 웹서버 만들기 3 - HTML, CSS (0) | 2020.11.01 |
[APM] 직원 월급 관리 웹서버 만들기 2 - PHP, HTML (0) | 2020.10.31 |
[APM] 직원 월급 관리 웹서버 만들기 1 - DB, PHP, HTML (0) | 2020.10.31 |
댓글