큰 워크 시트로 작업 할 때 워크 시트의 정보를 논리적으로 그룹화 할 수 있도록 부분합을 추가하는 것은 드문 일이 아닙니다. (소계 도구는 개요 그룹에있는 리본의 데이터 탭에 있습니다.) 부분합을 추가 할 때 Excel이 새 페이지에서 각 그룹을 시작하도록 지정할 수 있습니다. 이것은 Excel의 모든 유형의보고에 매우 편리합니다.

새 페이지에서 각 그룹 또는 부분합 섹션을 시작하는 경우 Word 문서의 다른 섹션에서 수행 할 수있는 작업과 유사하게 각 섹션에 대해 다르게 인쇄되는 사용자 지정 머리글을 만드는 방법이 있는지 궁금 할 수 있습니다. 불행히도 Excel에서는이 작업을 수행 할 수 없습니다. 그러나 머리글을 반복적으로 변경하고 워크 시트의 각 그룹을 인쇄하는 매크로를 만들 수 있습니다. 다음 매크로를 고려하십시오.

Sub ChangeSectionHeads()

Dim c As Range, rngSection As Range     Dim cFirst As Range, cLast As Range     Dim rowLast As Long, colLast As Integer     Dim r As Long, iSection As Integer     Dim iCopies As Variant     Dim strCH As String

Set c = Range("A1").SpecialCells(xlCellTypeLastCell)

rowLast = c.Row     colLast = c.Column

iCopies = InputBox( _         "Number of Copies", "Changing Section Headers", 1)



If iCopies = "" Then Exit Sub

Set cFirst = Range("A1")     ' initialization start cell     For r = 2 To rowLast    ' from first row to last row         If ActiveSheet.Rows(r).PageBreak = xlPageBreakManual Then             Set cLast = Cells(r - 1, colLast)

Set rngSection = Range(cFirst, cLast)



iSection = iSection + 1             Select Case iSection             '   substitute your CenterSection Header data ...

Case 1: strCH = "Section 1"

Case 2: strCH = "Section 2"

'   etc             '   Case n: strCH = "Section n"

End Select

ActiveSheet.PageSetup.CenterHeader = strCH

rngSection.PrintOut _                 Copies:=iCopies, Collate:=True

Set cFirst = Cells(r, 1)

End If     Next r

'   Last Section +++++++++++++++++++++++++++



Set rngSection = Range(cFirst, c)



iSection = iSection + 1 '   substitute your Center Header data ...

strCH = "Last Section ..."



ActiveSheet.PageSetup.CenterHeader = strCH

rngSection.PrintOut _         Copies:=iCopies, Collate:=True End Sub

이 매크로는 원하는 작업을 수행하기위한 좋은 시작입니다. 각 섹션에 대해 몇 장을 인쇄할지 묻는 것으로 시작하고 각 행을 살펴보고 해당 행 앞에 페이지 나누기가 있는지 확인합니다.

실제 행 검사는 각 행의 PageBreak 속성을 확인하여 수행됩니다. 이 속성은 일반적으로 xlPageBreakNone으로 설정되지만 Excel의 부분합 기능을 사용하는 경우이 속성이 xlPageBreakManual로 설정되기 전에 페이지 나누기가있는 모든 행입니다. 이것은 워크 시트에 페이지 나누기를 수동으로 배치 한 경우에 발생하는 것과 동일한 설정입니다.

매크로가 행 앞에 페이지 나누기가 있음을 감지하면 rngSection 범위는 이전 그룹의 행과 동일하게 설정됩니다. 또한 Select Case 구조는 워크 시트의 다른 섹션에 사용되는 다른 제목을 설정하는 데 사용됩니다. 그런 다음이 머리글은 머리글의 중앙 위치에 배치되고 rngSection에 지정된 범위가 인쇄됩니다.

워크 시트의 모든 그룹을 단계별로 실행 한 후 페이지 나누기로 끝나지 않는 최종 그룹이 인쇄됩니다.

이 매크로를 사용하려면 워크 시트의 각 섹션에 대해 원하는 다른 제목을 Select Case 구조 내에서 지정하기 만하면됩니다. 원하는 경우 머리글에서 머리글 위치를 변경할 수도 있습니다. CenterHeader 속성을 LeftHeader 또는 RightHeader로 변경하기 만하면됩니다. 원하는 경우 LeftFooter, CenterFooter 및 RightFooter를 사용할 수도 있습니다.

_ 참고 : _

이 페이지 (또는 ExcelTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.

link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요].

_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.

이 팁 (9867)은 Office 365의 Microsoft Excel 2007, 2010, 2013, 2016, 2019 및 Excel에 적용됩니다.