Леонид спросил, есть ли способ установить цвет фона для верхнего или нижнего колонтитула страницы. Ответ прост: в Excel нет такой возможности. Однако есть несколько способов обойти эту проблему. Например, если вы используете Excel 2002 или Excel 2003, вы можете добавить графику в верхний или нижний колонтитул. С помощью правильного рисунка вы можете создать впечатление, что верхний и нижний колонтитулы содержат цвет, хотя на самом деле цвет содержит изображение.

Другой вариант — сделать «фальшивые» верхние и нижние колонтитулы. Если все, что вам нужно, это заголовок другого цвета, то вы можете использовать первую пару строк рабочего листа в качестве заголовка. Эти строки вы можете отформатировать по своему усмотрению, включая настройку цвета строк. Затем вы можете указать Excel повторять эти строки в верхней части каждой страницы распечатки (используя для этого диалоговое окно «Параметры страницы»).

Повторение строк для области нижнего колонтитула становится более проблематичным, поскольку Excel не включает функцию, которая позволяет вам повторять строки в нижней части каждой страницы. Создание макроса для добавления строк для верхнего и нижнего колонтитулов возможно, но это приведет к изменению вашего рабочего листа — необходимо добавить строки для поддельных верхних и нижних колонтитулов.

В качестве примера рассмотрим следующий макрос. Предполагается, что вы хотите, чтобы слева и справа от распечатки были поля в один дюйм, и что вы хотите печатать только 46 строк на странице. Он устанавливает поля, а затем проходит по листу, при необходимости добавляя фальшивые строки верхнего и нижнего колонтитула. (Поскольку макрос корректирует дизайн рабочего листа, убедитесь, что вы сохранили рабочий лист перед запуском макроса.)

Sub FakeHeaderFooter()

Dim LHeader As String     Dim CHeader As String     Dim LFooter As String     Dim CFooter As String     Dim CBottom As Integer     Dim CRow As Integer     Dim PageSize As Integer          LHeader = "Top Left"

CHeader = "Top Center"

LFooter = "Bottom Left"

CFooter = "Bottom Center"

PageSize = 46

With ActiveSheet.PageSetup         .PrintTitleRows = ""

.PrintTitleColumns = ""

.PrintArea = ""

.LeftHeader = ""

.CenterHeader = ""

.RightHeader = ""

.LeftFooter = ""

.CenterFooter = ""

.RightFooter = ""

.LeftMargin = Application.InchesToPoints(1)

.RightMargin = Application.InchesToPoints(1)

.TopMargin = Application.InchesToPoints(0)

.BottomMargin = Application.InchesToPoints(0)

.HeaderMargin = Application.InchesToPoints(0)

.FooterMargin = Application.InchesToPoints(0)

.PrintHeadings = False         .Orientation = xlPortrait     End With

CBottom = Range("A16000").End(xlUp).Row

CRow = 1     Do Until CRow > CBottom         If CRow Mod PageSize = 1 Then             Rows(CRow).Select             Selection.Insert Shift:=xlDown             Selection.Insert Shift:=xlDown             CBottom = CBottom + 2

Cells(CRow, 1).Value = LHeader             Cells(CRow, 4).Value = CHeader             Range(Cells(CRow, 1), _               Cells(CRow, 8)).Interior.ColorIndex = 34             Range(Cells(CRow + 1, 1), _               Cells(CRow + 1, 8)).Interior.ColorIndex = xlNone             CRow = CRow + 2         ElseIf CRow Mod PageSize = PageSize - 1 Then             Rows(CRow).Select             Selection.Insert Shift:=xlDown             Selection.Insert Shift:=xlDown             CBottom = CBottom + 2

Cells(CRow + 1, 1).Value = LFooter             Cells(CRow + 1, 4).Value = CFooter             Range(Cells(CRow + 1, 1), _               Cells(CRow + 1, 8)).Interior.ColorIndex = 34             CRow = CRow + 2         Else             CRow = CRow + 1         End If     Loop

LastPageNumber = PageNumber + 1     LastRow = LastPageNumber * PageSize     If CBottom <> LastRow Then             Range(Cells(LastRow, 1), _               Cells(LastRow, 8)).Interior.ColorIndex = 34             Cells(LastRow, 1).Value = LFooter             Cells(LastRow, 4).Value = CFooter     End If

CBottom = Range("A16000").End(xlUp).Row

CRow = 2     Do Until CRow > CBottom         If CRow Mod PageSize = 1 Then             Cells(CRow, 1).PageBreak = xlManual         End If         CRow = CRow + 1     Loop End Sub

Чтобы изменить количество строк на странице, просто измените значение, присвоенное переменной PageSize. Вы также можете изменить то, что отображается в области «заголовок» и «нижний колонтитул», изменив то, что присвоено переменным LHeader, CHeader, LFooter и CFooter.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (3056) применим к Microsoft Excel 97, 2000, 2002 и 2003.