设置Worksheet.PageSetup.XxxFooter时出错

时间:2014-02-28 20:53:39

标签: excel-vba footer vba excel

我正在使用Excel 2007.以下是代码:

Dim ws As Worksheet, lf As String, cf As String, rf As String
...
rf = "&""-,Italic""&K7F7F7F" & "Some text"
...
ws.PageSetup.LeftFooter = lf
ws.PageSetup.CenterFooter = cf
ws.PageSetup.RightFooter = rf

我在最后一行收到以下错误。

Run-time error '1004': Unable to set the RightFooter property of the PageSetup class

LeftFooterCenterFooter属性设置得很好。但是,如果我更改了属性的设置顺序,那么最后一个,LeftFooterCenterFooter会触发错误,前两个总是成功设置。所以这告诉我,这不是页脚或其他语法的错误。

请注意,我将一些字体设置为斜体,并在所有三个页脚部分设置不同的颜色。如果我删除有关更改为斜体和颜色的部分(仅在最后一个页脚部分),则执行时没有错误。
编辑另外,如果我只删除斜体部分,然后代码执行没有错误。 / EDIT

我首先得到了这个错误,然后玩变量和连接,直到最后它起作用,但现在它又被打破了,我无法弄清楚问题。

This question似乎可能有关系,但我不确定。我尝试了适合那个人的修复程序(使用Replace除了返回一个新的字符串之外什么都不做),但我仍然得到同样的错误。

我尝试过不使用连接来设置lfcfrf,合并变量以及许多其他不应该产生影响的东西(绝望中)无论如何,我一直收到这个错误。有谁知道问题可能是什么?

更新
我从来没有找到我的问题的答案,所以我只是删除了斜体字体样式,其余的工作。我很高兴。但是,现在,我必须为横向表创建页眉和页脚(另一个是纵向)。页眉和页脚与纵向页面完全相同,只是中间页脚部分中的某些文本较长。其余的完全相同。复制了创建页脚的整个过程,只更改了一段文本。现在我得到了和以前一样的错误(没有斜体部分)。和以前一样,它发生在最后设置的页脚部分。请注意,纵向页脚仍然正常运行。这让我很疯狂,而且我在你认为相当简单的问题上失去了宝贵的时间。

任何人都可以复制错误吗?

这是完整的代码:

Private Const LINE_CLR As String = "&K538ED5" ' RGB(83, 142, 213)
'Private Const TEXT_STYLE AS STRING = "&""-,Italic"""
Private Const TEXT_STYLE As String = ""
Private Const TEXT_CLR As String = "&K7F7F7F" ' RGB(127, 127, 127)
Private Const FTR_INDENT_RT As String = "          "
Private Const FTR_INDENT_LT As String = "          "

' *****************************************************************************
Private Function HOR_LINE_PORTRAIT() As String
    HOR_LINE_PORTRAIT = String(128, "_")
End Function

' *****************************************************************************
Private Function HOR_LINE_LANDSCAPE() As String
    HOR_LINE_LANDSCAPE = String(191, "_")
End Function

' *****************************************************************************
Public Sub CreateFooter_Landscape( _
        ByRef ws As Worksheet, _
        ByVal txt1 As String, _
        ByVal txt2 As String, _
        ByVal txt3 As String)
    Dim txtL As String, txtC As String, txtR As String
    Dim lf As String, cf As String, rf As String ' left, center, and right footer

    txtL = "Some text1: " & txt1
    txtC = "Some text2: " & txt2
    txtR = "Some text3 " & txt3

    lf = TEXT_STYLE & TEXT_CLR & FTR_INDENT_LT & txtL
    cf = LINE_CLR & HOR_LINE_LANDSCAPE & Chr(10) & TEXT_STYLE & TEXT_CLR & txtC
    rf = TEXT_STYLE & TEXT_CLR & txtR & FTR_INDENT_RT

    ws.PageSetup.LeftFooter = lf
    ws.PageSetup.CenterFooter = cf
    ws.PageSetup.RightFooter = rf
End Sub

1 个答案:

答案 0 :(得分:0)

我仍然没有对此有明确的答案,但在我的试验中,我注意到了一些事情(最重要的是通过VBA设置页眉和页脚是非常古怪的):

  1. 我在中间页脚部分(以一串下划线的形式)有一个水平条,横跨整个页面宽度。我注意到如果我大大减小了条的宽度,那么错误消失了。但是,栏需要跨越整个页面宽度,因此这不是一个可接受的解决方案,只是观察

  2. 我有一个单独的程序来设置页面的页眉和页脚。我通过程序的参数传递了页脚的文本。但是,我注意到,如果我将其他所有内容保持不变,只是将参数变量(连接文本时)覆盖了硬编码值,错误消失了。同样,这不是一个选项,因为该值不能被硬编码。

  3. 此外,在连接字符串时,我直接调用了一个函数(返回了String)。但是,如果我用局部变量替换函数调用,则错误消失。我做了这个改变,但由于其他因素,我仍然得到错误。

  4. 如果我发现任何其他内容,我会尝试更新此答案,或者通过"真实"答案。

    <强>更新
    我最后只是将水平条从下划线转换为图像,然后我开始工作了。所以我猜中心部分的下划线,但左右两部分重叠导致了某种问题。我还没有尝试过添加斜体样式,我想不出来。它正在工作,我花了太多时间在这上面。