본문 바로가기
지난 게시글

[엑셀] VBA 특정 행의 이름이 바뀔때마다 페이지 나눠 인쇄하기

by yyDandy 2024. 1. 11.
반응형

안녕하세요. 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

 

[엑셀] VBA 특정한 셀, 범위 선택하는 법 ActiveSheet.UsedRange

안녕하세요. yyDandy입니다. 사무실 칼퇴보장 알잘딱깔센 엑셀 활용법! ActiveSheet.UsedRange 엑셀을 사용하면서 특정한 값만 선택하고 싶은 경우가 생기는데요. 그럴 때는 물론 앞서 알려드린 SpecialCell

yydandy.tistory.com

 

 

마지막으로 미리보기(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

 

'취미/엑셀' 카테고리의 글 목록

일상, 맛집, 공부 등 내 삶을 기록해보자.

yydandy.tistory.com

 

반응형