엑셀의 워크시트에서 셀 영역을 병합하는 경우가 많습니다. VBA 에서는 셀 병합을 위해서 Range 개체의 Merge 함수를 사용해야 합니다. 오늘은 VAB 에서 Merge 와 UnMerge 함수를 사용해 셀 영역을 병합하거나 다시 원래대로 돌리는 방법에 대해 알아 보겠습니다.
▼ 이번에 만들 코드는 워크시트에서 선택한 셀을 매크로로 병합하는 것입니다. 매크로 작성을 하기 위해 [개발도구] > [매크로] 리본 메뉴를 선택합니다.
▼ 셀을 병합하는 소스는 간단합니다. Range 함수로 얻은 영역 객체에서 Merge() 와 UnMerge() 함수를 사용하면 됩니다. Merge() 는 셀 영역을 병합하는 기능을 수행하고 UnMerge() 는 그 반대입니다.
Sub SellMerge() '' 셀 병합하기 Range("A2:A5").Merge End Sub Sub SellUnMerge() '' 셀 병합하기 Range("A2:A5").UnMerge End Sub |
▼ 위의 소스에서 Merge() 를 수행한 결과 입니다. 워크시트의 A2:A5 영역을 병합했습니다.
▼ Merge() 함수를 실행해서 셀을 병합한 것을 다시 원래 대로 되돌리기 위해 UnMerge() 를 실행했습니다.
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 VBA 워크시트 개체를 이용해서 시트 관리하는 방법 ▶ 엑셀 VBA 셀 영역 선택하는 여러가지 방법 ▶ 엑셀 VBA 데이터 분리해서 다른 시트에 붙여 넣는 방법 ▶ 엑셀 VBA 시트에서 데이터 셀 영역 구하는 방법 ▶ 엑셀 VBA 시트 테두리 선 그리는 방법 |
◎ 병합 하려는 영역에 데이터가 여러 개를 합칠 때 |
▼ 그럼 셀 영역에 여러 개의 값이 있을 때는 어떻게 될까요? 아래 그림처럼 병합하려는 셀에 3개의 데이터가 있습니다.
▼ 셀 병합 함수를 실행하게 되면 아래 그림과 같이 엑셀 리본 메뉴에서 실행할 때와 같은 메시지가 뜨게 됩니다. 제일 상단에 있는 셀만 남기고 모두 제거가 되는 것이죠. 이렇게 메시지가 뜨기 때문에 본인이 미처 체크하지 못한 상황에서 데이터를 날려 먹을 일은 없습니다.
◎ Range 선택한 영역을 바로 합치고자 할 때 |
▼ 이번에는 Range() 함수의 인수로 영역을 지정하는 것이 아니라 마우스로 드래그해서 영역을 지정했을 때 그것을 인식해서 병합하는 소스입니다. 그럼 영역을 병합하기 위해 매번 소스를 수정하지 않아도 되겠죠. 그 역활을 하는 것이 Selection 속성입니다. Selection 속성은 워크시트에 선택된 영역의 객체를 리턴합니다. 이렇게 리턴한 객체의 함수로 Merge 와 UnMerge 함수를 사용하면 마우스로 선택한 영역을 바로 병합하거나 해제할 수 있습니다.
Sub SelectionSellMerge() Selection.Merge End Sub Sub SelectionSellUnMerge() Selection.UnMerge End Sub |
▼ 아래 그림처럼 셀을 선택한 상태에서 매크로를 실행했습니다. Range 로 영역을 선택해서 실행한 것과 동일한 결과가 나타납니다.
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 VBA 워크시트 개체를 이용해서 시트 관리하는 방법 ▶ 엑셀 VBA 셀 영역 선택하는 여러가지 방법 ▶ 엑셀 VBA 데이터 분리해서 다른 시트에 붙여 넣는 방법 ▶ 엑셀 VBA 시트에서 데이터 셀 영역 구하는 방법 ▶ 엑셀 VBA 시트 테두리 선 그리는 방법 |
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀 VBA 셀 참조하는 여러가지 방법 (4) | 2024.01.11 |
---|---|
엑셀 VBA 이항 논리 연산자 And, Or, Xor 와 단항 논리 연산자 Not 사용하기 (1) | 2024.01.03 |
엑셀 VBA 함수 CStr 데이터를 문자열로 변환하기 (1) | 2024.01.02 |
엑셀 VBA 날짜 여부 확인 함수 IsDate 사용하기 (1) | 2024.01.02 |
엑셀 VBA 문자열 자르기, LEFT RIGHT 함수를 이용해 문자열 추출하는 방법 (0) | 2023.12.23 |
엑셀 VBA 체크 박스 CheckBox 컨트롤 사용하기 (0) | 2023.12.20 |
엑셀 VBA 워크시트(Worksheet) 개체를 이용해서 시트 관리하기 (1) | 2023.12.17 |
엑셀 VBA 날짜 차이를 계산하는 DateDiff 함수 사용하기 (0) | 2023.12.09 |