이 게시판은 아별닷컴 회원만 질문을 올릴 수 있습니다. 회원에게 주어지는 특권인셈이지요. 회원이 아닌 분들은 열람만 가능합니다.
글 수 822
안녕하세요.
vba 코딩 중 막히는 부분이 있어서 이렇게 글을 올립니다.
바쁘지 않으시면 도움 좀 청해도 될런지요?
첨부된 예제의 "원본" 워크시트의 색깔이 입혀진 부분은 셀이 병합되어 있습니다.
(특히 하늘색 부분은 불필요하게 2행까지 병합된 것이죠. 예제라 A1:M2가 병합되었지만,
실제는 A1:M3, A1:M4 등이 병합되었을 수 있고, 다른 양식일 경우 B10:K15 등이 병합되는 등 특정할 수 없습니다.)
매크로를 실행하면 "실행후" 워크시트처럼 셀 병합을 해제하고 셀 병합과 같은 효과입니다.
그런데, "실행후" 워크시트의 3~5행을 보면 행의 높이가 "원본" 워크시트에 비해 바뀐 것을 알 수 있습니다.
매크로를 실행해도 행의 높이가 바뀌지 않게 하는 방법이 있을까요?
(코드 중 .Offset(1, 0).Resize(irow - 1, iColumn).Delete shift:=xlUp부분을
.Offset(1, 0).Resize(irow - 1, iColumn).EntireRow.Delete로 수정하면 행 높이가 변하지 않는데요.이럴경우 N2:P2의 데이타가 지워져서요...)
고수가되고파님..
음.. 행을 지우면 그 만큼 전체적으로 위로 올라가겠죠..
아래 코드로 대체한다고 하더라도.. 행은 삭제되기 때문에 전체적으로 올라가는데요?
.Offset(1, 0).Resize(irow - 1, iColumn).EntireRow.Delete
암튼..
해당 행을 지우기 전에 남아 있을 행의 행높이를 지워질 행높이를 포함하는 크기로 조절한 다음 행을 삭제하면 될 것 같은데요..
코드 중에서 아래의 굵게 표시한 코드 한줄을 추가해보세요..
정확히 일치하지는 않지만.. 대충 비슷해집니다.
첨부파일을 참고하세요..
다운받기 : 예제(병합효과)-2.xlsm
End If
.MergeCells = False '셀병합 해제
.Resize(1, iColumn).HorizontalAlignment = xlCenterAcrossSelection '선택영역의 가운데로
.RowHeight = .RowHeight + .Offset(1, 0).RowHeight
.Offset(1, 0).Resize(irow - 1, iColumn).Delete shift:=xlUp
iCount = iCount + 1
End If
End With