0

这个宏是为工作簿中的所有工作表设置一个四行左页眉。这个宏的重点是控制每一行的字体大小和属性,即粗体。我有一个名为 header 的单独表格,其中包含我使用的值。它适用于 3 行,但是当我添加第四行时,它会出错。我得到这个错误。运行时错误“1004”:无法设置 PageSetup 类的 LeftHeader 属性

另请注意,我正在运行 Excel 2010 64 位。

Sub Header()
    '
    ' Header Macro
    '
    lHeader = "&""Calibri,Regular""&10" & Worksheets("Header").Range("B2").Value
    lHeader = lHeader & Chr(13) & "&""Calibri,Regular""&10" & Worksheets("Header").Range("B3").Value
    lHeader = lHeader & Chr(13) & "&""Calibri,Regular""&10" & Worksheets("Header").Range("B4").Value
    lHeader = lHeader & Chr(13) & "&""Calibri,Regular""&10" & Worksheets("Header").Range("B5").Value

    Dim Naam As String, NameFile() As String
    ReDim NameFile(1 To Sheets.Count)

    With Application
        .ScreenUpdating = False
        i = 1
        For Each shtNext In Sheets
            With Sheets(i).PageSetup
                .LeftHeader = lHeader

                .LeftFooter = Format(Now, "mmmm d, yyyy")

                .CenterFooter = "&""Calibri,Regular""&10" & Format(Worksheets("Header").Range("C8").Value)

                .RightFooter = "&""Calibri,Regular""&10" & Format(Worksheets("Header").Range("D8").Value) & "&p of &N"
            End With
            i = i + 1
        Next shtNext
    End With
End Sub
4

2 回答 2

1

您收到该错误是因为您超出了 255 个字符的限制。不幸的是,我找不到 MSDN 文章来支持它,但它可以很容易地重新生成。

您拥有的当前长度是

HeaderL - 121 
HeaderC - 112
HeaderR - 121

Total   - 354

试试这个代码。在这里您可以尝试减少字符。

Sub Header()
    HeaderL = "&""Calibri,Regular""&10" & Worksheets("Header").Range("B2").Value
    HeaderL = HeaderL & Chr(10) & "&""Calibri,Regular""&10" & Worksheets("Header").Range("B3").Value
    HeaderL = HeaderL & Chr(10) & "&""Calibri,Regular""&10" & Worksheets("Header").Range("B4").Value
    HeaderL = HeaderL & Chr(10) & "&""Calibri,Regular""&10" & Worksheets("Header").Range("B5").Value

    HeaderC = "&""Calibri,Bold""&14" & Worksheets("Header").Range("C2").Value
    HeaderC = HeaderC & Chr(10) & "&""Calibri,Bold""&14" & Worksheets("Header").Range("C3").Value
    HeaderC = HeaderC & Chr(10) & "&""Calibri,Bold""&14" & Worksheets("Header").Range("C4").Value
    HeaderC = HeaderC & Chr(10) & "&""Calibri,Regular""&14" & Worksheets("Header").Range("B5").Value

    HeaderR = "&""Calibri,Regular""&10" & Worksheets("Header").Range("D2").Value
    HeaderR = HeaderR & Chr(10) & "&""Calibri,Regular""&10" & Worksheets("Header").Range("D3").Value
    HeaderR = HeaderR & Chr(10) & "&""Calibri,Regular""&10" & Worksheets("Header").Range("D4").Value
    HeaderR = HeaderR & Chr(10) & "&""Calibri,Regular""&10" & Worksheets("Header").Range("D5").Value

    If Len(HeaderL) + Len(HeaderC) + Len(HeaderR) > 255 Then
        MsgBox "Oops, You have exceeded the character limit. Please reduce it and try again"
        Exit Sub
    End If

    Dim ws As WorkSheet

    Application.ScreenUpdating = False

    For Each ws In ThisWorkbook.Sheets
        With ws.PageSetup
            .LeftHeader = HeaderL

            .CenterHeader = HeaderC

            .RightHeader = HeaderR

            .LeftFooter = Format(Now, "mmmm d, yyyy")

            .CenterFooter = "&""Calibri,Regular""&10" & Format(Worksheets("Header").Range("C8").Value)

            .RightFooter = "&""Calibri,Regular""&10" & Format(Worksheets("Header").Range("D8").Value) & "&p of &N"
        End With
    Next ws

    Application.ScreenUpdating = True
End Sub
于 2013-11-09T05:42:21.577 回答
0

255 个字符的限制是真实的,即使在分隔宏时也是如此。字体值占总数的很大一部分。所以我把它们都删除了,最后一行除外。但是,如果我需要一份具有不同字体大小的报告。我有一点回旋的余地来改变其中两条线而不会变得太大。

LHeader = Worksheets("Header").Range("B2").Value
LHeader = LHeader & Chr(10) & Worksheets("Header").Range("B3").Value
LHeader = LHeader & Chr(10) & Worksheets("Header").Range("B4").Value
LHeader = "&""Calibri,Regular""&10" & LHeader & Chr(10) & Worksheets("Header").Range("B5").Value

CHeader = Worksheets("Header").Range("C2").Value
CHeader = CHeader & Chr(10) & Worksheets("Header").Range("C3").Value
CHeader = CHeader & Chr(10) & Worksheets("Header").Range("C4").Value
CHeader = "&""Calibri,Bold""&14" & CHeader & Chr(10) & Worksheets("Header").Range("B5").Value


RHeader = Worksheets("Header").Range("D2").Value
RHeader = RHeader & Chr(10) & Worksheets("Header").Range("D3").Value
RHeader = RHeader & Chr(10) & Worksheets("Header").Range("D4").Value
RHeader = "&""Calibri,Regular""&10" & RHeader & Chr(10) & Worksheets("Header").Range("D5").Value
于 2013-11-11T17:58:56.427 回答