هنگام کار با کاربرگ های بزرگ، اضافه کردن جمع های فرعی غیرعادی نیست تا بتوانید اطلاعات را در کاربرگ به روشی منطقی گروه بندی کنید. (ابزار Subtotal در زبانه Data روبان در گروه Outline قرار دارد.) هنگام اضافه کردن جمع های فرعی، می توانید تعیین کنید که اکسل هر گروه را در یک صفحه کاملاً جدید شروع کند. این برای همه انواع گزارش در اکسل بسیار مفید است.
اگر هر گروه یا بخش فرعی را در یک صفحه جدید شروع کنید، ممکن است تعجب کنید که آیا راهی برای ایجاد هدرهای سفارشی وجود دارد که برای هر بخش متفاوت چاپ شوند، مشابه آنچه می توانید با بخش های مختلف در یک سند Word انجام دهید. متاسفانه هیچ راهی برای انجام این کار در اکسل وجود ندارد. با این حال، می توانید یک ماکرو ایجاد کنید که به طور مکرر عنوان را تغییر دهد و هر گروه از یک کاربرگ را چاپ کند. ماکرو زیر را در نظر بگیرید:
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 تنظیم میشود، اما وقتی از ویژگی Subtotals در اکسل استفاده میکنید، هر ردیفی که قبل از آن صفحه شکسته باشد، این ویژگی را روی xlPageBreakManual تنظیم میکند. این همان تنظیماتی است که اگر به صورت دستی شکستگی های صفحه را در کاربرگ خود قرار دهید، رخ می دهد.
اگر ماکرو تشخیص دهد که یک ردیف قبل از آن یک صفحه شکستگی دارد، محدوده rngSection برابر با ردیفهای گروه قبلی تنظیم میشود. همچنین از ساختار Select Case برای تنظیم سرفصل های مختلف مورد استفاده برای بخش های مختلف کاربرگ استفاده می شود. سپس این عنوان در موقعیت مرکزی هدر قرار می گیرد و محدوده مشخص شده توسط rngSection چاپ می شود.
پس از گذر از تمام گروههای کاربرگ، گروه نهایی (که با شکست صفحه تمام نمیشود) چاپ میشود.
برای استفاده از این ماکرو، تنها کاری که باید انجام دهید این است که در ساختار Select Case عناوین مختلفی را که برای هر بخش از کاربرگ میخواهید مشخص کنید. همچنین در صورت تمایل می توانید محل قرارگیری عنوان را در هدر تغییر دهید. تنها کاری که باید انجام دهید این است که ویژگی CenterHeader را به LeftHeader یا RightHeader تغییر دهید. در صورت تمایل می توانید از LeftFooter، CenterFooter و RightFooter نیز استفاده کنید.