Изменение заголовков разделов (Microsoft Excel)
При работе с большими листами нет ничего необычного в добавлении промежуточных итогов, чтобы можно было логически сгруппировать информацию на листе. (Инструмент «Промежуточные итоги» находится на вкладке «Данные» на ленте в группе «Структура».) При добавлении промежуточных итогов можно указать, что 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) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365.