Excel.Tips.Net Welcome toExcel.Tips.Net

Helpful Links

Tips.Net Home
ExcelTips Home
Ask an Excel Question
Make a Comment

Tips.Net Store

ExcelTips FAQ
ExcelTips Premium

Learn Access Now

Beauty Tips
Car Tips
Cleaning Tips
College Tips
Cooking Tips
Excel2007 Tips
ExcelTips
Family Tips
Gardening Tips
Health Tips
Home Tips
Money Tips
Organizing Tips
Pest Tips
Pet Tips
Wedding Tips
Word2007 Tips
WordTips

Advertise on the
ExcelTips Site

Newest Tips

Assigning a Macro to a Keyboard Combination

Creating Scenarios

Using Message Boxes

Understanding Phantom Macros

Picking a Group of Cells

Running Out of Memory

Hiding Rows Based on a Cell Value

 

Header and Footer Background Color

Summary: Want to add some color to the printing of your page headers and footers? Your options are limited, as disclosed in this tip. (This tip works with Microsoft Excel 97, Excel 2000, Excel 2002, Excel 2003, and Excel 2007.)

Leonid asked if there was a way to set a background color for the header or footer of a page. The simple answer is that there isn't such a capability in Excel. There are a couple of ways around the issue, however. For instance, if you are using Excel 2002 (or a later version) you can add a graphic to a header or footer. With the right graphic, you can make it appear that the header and footer contain color when, in fact, it is the graphic that contains the color.

Another option is to make "fake" headers and footers. If all you want to do is have a different color header, then you can use the first couple of rows of the worksheet as your header. These rows you could format as desired, including setting the color of the rows. You could then instruct Excel to repeat those rows at the top of every page of the printout (us the Page Setup dialog box for this).

Repeating rows for the footer area becomes more problematic, as Excel doesn't include a feature that allows you to repeat rows at the bottom of each page. Creating a macro to add rows for the header and footer is possible, but it does result in a change to your worksheet—rows need to be added for the fake headers and footers.

As an example, consider the following macro. It assumes that you want one-inch borders on the left and right of the printout, and that you want to print only 46 rows per page. It sets the margins and then steps through the worksheet, adding the fake header and footer rows, as necessary. (Because the macro adjusts the design of the worksheet, make sure you save your worksheet before running the macro.)

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

To change the number of lines per page, just change the value assigned to the PageSize variable. You can also change what appears in the "header" and "footer" area by changing what is assigned to the LHeader, CHeader, LFooter, and CFooter variables.

ExcelTips is your source for cost-effective Microsoft Excel training. This tip (3056) applies to Microsoft Excel versions: 97 | 2000 | 2002 | 2003 | 2007

Got the Time? Understanding the ins and outs of working with times and dates can be confusing. Remove the confusion--ExcelTips: Times and Dates is an invaluable resource for learning how best to work with times and dates.
 
Check out ExcelTips: Times and Dates today!