병합된 셀의 홈(A1) 셀 알아내기(1) - 셀 병합 관련 메소드 및 속성
1. 문제
병합된 셀의 첫셀을 홈 또는 A1셀이라고 합니다.
엑셀 시트에서 A1셀이 홈이지만,
병합된 셀에서도 왼쪽 위 모서리가 홈이 되는 것입니다.
아래와 같은 경우 B3셀에서 B8셀까지 병합되어 있는데, 숫자는 B3셀에만 들어가 있고, B3셀이 홈 셀입니다.
2. VBA로 홈 셀 알아내기
가. 병합된 셀과 관련된 메서드와 속성
(1) Merge
(가) 구문
범위.Merge
지정된 범위를 병합하는 것입니다.
(나) 적용
개발도구 - Visual Basic을 누른 다음
삽입 모듈을 하면
왼쪽 엑셀 파일명 아래에 모듈 > Module1이 생기는데,
오른쪽 코드 창에
sub merge 하고 엔터 키라고 칩니다.
그러면 아래와 같이 Sub 프로시저가 만들어집니다.
그 안에 Range("E3:E8").merge 라고 입력하고
Sub merge()
Range("E3:E8").merge
End Sub
실행 > Sub/사용자 정의 폼 실행 F5 메뉴를 누른 다음
엑셀 아이콘(보기 Microsoft Excel)을 눌러 엑셀로 돌아가면 E3셀에서 E8셀까지가 셀 병합되었습니다.
(2) MergedArea
(가) 구문
범위.MergeArea로서 병합된 셀 중 하나를 지정하면 병합된 셀 전체가 범위로 지정됩니다.
범위는 단일 셀을 지정해야지 여러 셀을 셀을 지정하면 안 됩니다.
(나) 적용
다시 개발 도구 - Visual Basic으로 눌러 VB Editor로 돌아간 다음
이번에는 Sub 프러시저 안의
Range("E3:E8").merge 줄에서 '주석 블록 설정' 아이콘을 눌러 주석 처리합니다.
그리고, 범위를 변수에 저장하려면 Set과 범위 변수가 필요하므로
dim ma as range라고 ma를 범위 변수로 설정하고,
Sub merge()
Dim ma As Range
' Range("E3:E8").merge
Set ma = Range("e3").MergeArea
MsgBox ma.Address
End Sub
Set ma = Range("e3").MergeArea
ma 변수에 E3셀의 병합 영역을 할당한 다음
MsgBox ma.Address라고 하면
병합된 영역의 주소를 메시지 창에 표시합니다.
F5키를 눌러 실행하면 엑셀로 이동하면서
$E$3:$E$8이라고 병합된 영역의 주소를 보여줍니다.
확인 버튼을 누르면 VB 에디터로 돌아갑니다.
(3) MergeCells
(가) 구문
범위.MergeCells
범위가 병합된 셀인지 여부(True or False)를 알려줍니다.
(나) 적용
이번에는
MsgBox ma.Address 줄에 커서를 놓고
주석 블록 설정 아이콘을 눌러 주석 처리합니다.
그리고 그 아래 줄에
Debug.Print ma.MergeCells라고 입력하고 실행하면
Sub merge()
Dim ma As Range
' Range("E3:E8").merge
Set ma = Range("e3").MergeArea
' MsgBox ma.Address
Debug.Print ma.MergeCells
End Sub
이번에는 직접 실행창에 True라고 표시됩니다.
그런데 아래와 같이 여러 셀을 지정한 후 병합셀인지 표시하라고 하니
Debug.Print Range("c3:e9").MergeCells
Null이란 값이 나옵니다.
그러나 단일셀이라면
Debug.Print Range("c3").MergeCells
False가 반환됩니다.
여러 셀의 병합셀 여부 줄을 주석 처리하지 않아 Null과 False가 직접 실행창에 표시됐습니다.
(4) UnMerge
(가) 구문
범위.UnMerge
범위의 병합을 푸는 것입니다.
범위는 셀 하나만 지정할 수도 있고, 여러 셀을 지정해도 됩니다.
(나) 적용
복잡하므로 UnMerge란 서브 프로시저를 별도로 만들어 실행하고 엑셀로 돌아가서 확인하면
Sub unmerge()
Range("e3").unmerge
End Sub
E3셀에서 E8셀까지의 병합이 해제되었습니다.
셀 병합을 하는 Range("E3:E8").merge 줄이 주석처리되어 있으므로
'주석 블록 해제'아이콘을 눌러 주석을 제거한 다음
merge 서브 프로시저를 실행한 후
Range("e3")를 Range("e3:e4")라고 수정하고 실행하면
병합된 셀의 일부만을 지정했지만 마찬가지로 병합된 셀 전체의 병합이 풀립니다.
(5) 매크로 사용 통합 문서로 저장
엑셀로 돌아간 다음
파일 - 다른 이름으로 저장 메뉴를 누른 다음
파일 형식 오른쪽을 눌러 '매크로 사용 통합문서 (*.xlsm)'을 선택한 다음
파일 이름을 '셀 병합'으로 지정하고 저장합니다.