안녕하세요. yyDandy입니다. 사무실 칼퇴보장 알잘딱깔센 엑셀 활용법!
개요
오늘은 특정 행의 이름이 바뀔 때마다 페이지 나눠 인쇄하기에 대해 알려드릴게요. 이거 무슨 말인가 감이 안오실 수도 있어서 간단하게 설명해드리면 이런거죠! 보통 인쇄할 때 페이지 나누기를 삽입해서 하실텐데요. 그러면 선택하신 곳 기준으로 1페이지, 2페이지가 나뉘어서 인쇄가 됩니다. 보통 여러 사업의 현황을 한 엑셀에 작성할 때 이루어지는 작업인데요. 그런데 이게 10개, 20개가 되거나, 사업이 증감해서 행이 줄어들면 매번 수정해야하는 것이 너무 귀찮죠.. 그래서 이번에는 자동으로 페이지 나누기를 삽입할 수 있는 방법에 대해 알려드릴게요.
예를 들어 아래와 같은 상황에서 이름이 같은 사람끼리 페이지를 분리해서 2,3행, 4행, 5,6,7행, 8행 이렇게 각각이 4페이지로 분리되는 VBA 입니다.
코드 & 실행화면
Sub 페이지나누기()
Dim a As Long
Dim b As Long
a = 1
b = 1
With ActiveSheet
.ResetAllPageBreaks
Do
If Cells(a, 2) <> Cells(a + 1, 2) Then
b = b + 1
.HPageBreaks.Add Cells(a + 1, 1)
End If
a = a + 1
Loop Until IsEmpty(Cells(a + 1, 2))
.PageSetup.PrintArea = ActiveSheet.UsedRange.Offset(1).Address(1, 1)
.PrintPreview
.ResetAllPageBreaks
.PageSetup.PrintArea = ""
End With
End Sub
코드해설
Dim a와 Dim b는 변수선언입니다. 그리고 해당 변수에 1이라는 값을 넣어주었구요. 마지막 ResetAllpageBreaks는 기존 존재하던 페이지 나누기를 제거한다는 말입니다.
If문이 실행(Do) 되구요. 여기서는 Cells(a, 2) 즉 (1,2)의 값이 Cells(a+1, 2), (2,2)의 값과 다를(<>) 경우에 b 변수 값은 1이 늘어납니다. 그리고 .HPageBreaks(페이지 나누기)가 들어가는데요. 위치는 Cells(a + 1, 1) 지점입니다. 즉 1행과 2행의 값이 다르다면 2행과 1행 사이에 페이지 나누기가 들어간다는 말이죠. 그 후 If 문은 종료가 되고, a 값에는 1이 더해집니다. 이러한 반복은 a행이 없을 때 까지 진행된답니다. 다음은 인쇄될 영역을 설정하는건데요. UsedRange의 개념은 아래에서 확인 하실 수 있어요!
2024.01.07 - [엑셀] - [엑셀] VBA 특정한 셀, 범위 선택하는 법 ActiveSheet.UsedRange
마지막으로 미리보기(Preview)인데요. 여기서 PrintOut을 사용하시면 출력을 하실 수 있어요. 물론 b의 값에 페이지 넘기는 코딩을 해야 자동으로 넘어간답니다. 그 뒤에는 페이지 나누기를 돌리고, 영역을 리셋하면서 코드 종료입니다! 프린트 하는 것도 같이 알려드릴게요.
코드 끝부분에 PrintPreview를 없애고, PrintOut From:=2, To:=b 를 추가해주시면 되는데요. 앞서서 변수b를 만든 이유가 여기에 있었습니다! 그럼 모두 오늘도 칼퇴 해보자구요!
더 많은 글을 보고 싶다면 아래 링크를 눌러주세요!
https://yydandy.tistory.com/category/%EC%B7%A8%EB%AF%B8/%EC%97%91%EC%85%80
'지난 게시글' 카테고리의 다른 글
[이슈] 민사소송으로 떼인 돈 돌려받기, 감동실화(?) 이야기 (0) | 2024.01.21 |
---|---|
[엑셀] VBA 원하는 시트만 인쇄하기(또는 PDF 파일 만들기) (0) | 2024.01.11 |
[정책브리핑] 2024년 소위 월급 1,892,400원 공무원 보수규정 개정, 군인 얼마받나? (1) | 2024.01.08 |
[쇼핑] 새내기 노트북 추천, LG Gram 2024 디자인과 가격 완성! 구매 혜택 최대로 받는 방법은? [내돈내산] (3) | 2024.01.08 |
[전쟁] 러시아-우크라이나 전쟁, 새로운 키다리 아저씨 등장 정체는? (3) | 2024.01.08 |