大きなワークシートで作業する場合、ワークシート内の情報を論理的な方法でグループ化できるように、小計を追加することは珍しくありません。 (小計ツールは、[アウトライン]グループのリボンの[データ]タブにあります。)小計を追加するときに、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_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(9867)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。