【问题标题】:Error when setting Worksheet.PageSetup.XxxFooter设置 Worksheet.PageSetup.XxxFooter 时出错
【发布时间】:2014-04-02 01:38:38
【问题描述】:

我使用的是 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 属性设置得很好。但是,如果我更改设置属性的顺序,那么最后一个,无论是LeftFooter 还是CenterFooter 都会触发错误,而前两个总是设置成功。所以这告诉我这不是页脚或任何东西的语法错误。

请注意,我将所有三个页脚部分中的一些字体设置为斜体和不同的颜色。如果我删除了关于更改为斜体和颜色的部分(仅在页脚的最后一个部分),那么它会毫无错误地执行。
编辑另外,如果我只删除斜体部分,那么代码执行没有错误。/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

【问题讨论】:

  • 您是否在运行此代码的机器上安装了打印机?如果是这样,您是否尝试过将其更改为其他内容?
  • @RichardMorgan,是的,我确实安装了(物理)打印机,但我的默认设置是 PDF 打印机。我应该改变它吗?
  • 我不确定。过去,我在设置 PageSetup 属性时遇到了没有打印机和“虚拟”打印机的问题。另外,看看这个答案是否有帮助:stackoverflow.com/questions/18601744/…
  • @RichardMorgan,我更换了打印机,但仍然出现错误。我尝试了代码&L 等,但仍然出现错误。我正在格式化的工作表是一张新工作表,因此页脚中没有任何信息(这似乎是您发布的链接中的问题)。我的问题肯定与设置字体样式和颜色有关,但我不确定为什么它在前两个(格式相同)中有效,但在最后一个失败。

标签: excel footer vba


【解决方案1】:

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

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

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

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

如果我发现任何其他内容,我会尝试更新这个答案,或者幸运地得到一个“真实”的答案。

更新
我最终只是将水平条从下划线转换为图像,然后就可以使用了。所以我猜中心部分的下划线,但左右部分重叠会导致某种问题。我还没有尝试重新添加斜体样式,我想我不会。它很有效,我在这上面花了太多时间。

【讨论】:

    猜你喜欢
    • 2016-03-26
    • 2017-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多