병합된 셀의 자동 높이

병합된 셀의 자동 높이

[엑셀] 병합된 셀의 자동 높이(Merged Cell Autofit Height in Excel)

전공의 특성상 워드보다는 일러를, 엑셀보다는 캐드를 더 많이 쓰는 터라 사실 마이크로소프트 오피스를 전반적으로 뛰어나게 다루는 편은 아니었다. 고등학교까지 컴퓨터 시간에 배운 내용 정도가 나의 기본 지식이었다. 그러다가 며칠 전부터 아빠의 번역 일을 도와주느라고 엑셀을 쓰기 시작했는데, 엑셀은 엄청 똑똑한 녀석이기도 하다가 중요한 순간에 엄청 바보 같은 면모를 보이기도 한다.

그 중 대표적으로 셀의 높이를 텍스트 줄(셀의 크기보다 텍스트의 길이가 더 길 때 아랫줄로 자동으로 내려가거나 alt+Enter로 다음 줄로 넘겨 작성할 때)에 맞게 조절하는 것이 원래 엑셀 내에 포함되어 있는 기본 기능인데, 그것이 셀을 병합하기만 하면 자동으로 인식이 되지 않는다는 점이 순간 나는 도저히 이해가 가질 않았다. 그렇게 어려운 알고리즘이 아닌 것 같은데. 그리고 셀 병합이라면 엑셀을 사용할 때 필수적으로 사용되는 기능이 아니던가? 그러면 당연히 엑셀은 병합된 셀도 자동으로 높이 조절을 해줘야 할 것 같은데, 그렇지가 않았다.

찾아보니 엑셀 내에도 매크로가 존재했는데, 캐드로 따지면 리습이고, 포토샵으로 따지면 플러그인과 같은 존재다. VBA라고 한다.

엑셀 창에서 Alt + F11을 누르면 위 스크린캡쳐와 같은 Microsoft Visual Basic이 뜨는데, 여기에서 Insert > Module 로 모듈을 하나 만들어서 다음과 같은 코드를 입력한다.

Sub AdjustHeightMergedCell()

MrgAddr = ActiveCell.MergeArea.Address
Set rngMergeArea = Range(MrgAddr)
With rngMergeArea
.UnMerge
cellWidth = .Cells(1).ColumnWidth
MrgWidth = 0
For Each c In rngMergeArea
    c.WrapText = True
    MrgWidth = c.ColumnWidth + MrgWidth
Next
.Cells(1).ColumnWidth = MrgWidth
.EntireRow.AutoFit
rwHeight = .RowHeight
.Cells(1).ColumnWidth = cellWidth
.MergeCells = True
.RowHeight = rwHeight
End With

End Sub



그리고 저장을 한 뒤에 Microsoft Visual Basic 상에서 F5 또는 재생 버튼을 누르면 여러 줄로 써진 셀의 높이가 자동으로 조절된다. VBA의 방법은 아주 여러가지이지만 위 방법이 현재까지 새로운 파일을 만들지 않고 그나마 가장 간단하고 여러모로 응용가능한 방법이었다. 마우스로 칸의 높이를 조절하지 않아도 된다.

다른 VBA는 다른 sheet을 만들어서 셀들을 묶어서 높이를 조절하는 방법도 있었고, 병합된 셀을 미리 지정해주는 방법도 있었지만 내가 작성하는 문서는 병합되는 셀이 워낙 많았고, 다른 sheet를 굳이 만들고 싶지 않았기 때문에 위 방법이 그나마 가장 적당했다.

그때 그때 F5를 눌러줘도 되고, 다 작성을 한 뒤에 높이를 조절하기 위해서 셀 여러 개를 드래그한 상태에서 F5를 눌러줘도 상관 없다.

 

+ ASAP Utilities 라는 엑셀 Add-On 프로그램으로 더 쉽게 높이를 자동으로 맞출 수 있다. 32bit 마이크로 소프트 오피스에만 적용되는 줄 알았는데 4월 말부로 64bit 버전도 지원한다. 아직 엑셀을 크게 쓸 일이 없어서 다른 기능은 써보지 않았지만, 여러 기능이 많아서 사용해 봐야겠다.

[CAD] 더블 클릭으로 수정이 안 될 때

[CAD] 더블 클릭으로 수정이 안 될 때

REINIT_ Reload pgp and pat files in Cad

REINIT_ Reload pgp and pat files in Cad