我正在使用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
LeftFooter
和CenterFooter
属性设置得很好。但是,如果我更改了属性的设置顺序,那么最后一个,LeftFooter
或CenterFooter
会触发错误,前两个总是成功设置。所以这告诉我,这不是页脚或其他语法的错误。
请注意,我将一些字体设置为斜体,并在所有三个页脚部分设置不同的颜色。如果我删除有关更改为斜体和颜色的部分(仅在最后一个页脚部分),则执行时没有错误。
编辑另外,如果我只删除斜体部分,然后代码执行没有错误。 / EDIT
我首先得到了这个错误,然后玩变量和连接,直到最后它起作用,但现在它又被打破了,我无法弄清楚问题。
This question似乎可能有关系,但我不确定。我尝试了适合那个人的修复程序(使用Replace
除了返回一个新的字符串之外什么都不做),但我仍然得到同样的错误。
我尝试过不使用连接来设置lf
,cf
和rf
,合并变量以及许多其他不应该产生影响的东西(绝望中)无论如何,我一直收到这个错误。有谁知道问题可能是什么?
更新
我从来没有找到我的问题的答案,所以我只是删除了斜体字体样式,其余的工作。我很高兴。但是,现在,我必须为横向表创建页眉和页脚(另一个是纵向)。页眉和页脚与纵向页面完全相同,只是中间页脚部分中的某些文本较长。其余的完全相同。复制了创建页脚的整个过程,只更改了一段文本。现在我得到了和以前一样的错误(没有斜体部分)。和以前一样,它发生在最后设置的页脚部分。请注意,纵向页脚仍然正常运行。这让我很疯狂,而且我在你认为相当简单的问题上失去了宝贵的时间。
任何人都可以复制错误吗?
这是完整的代码:
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
答案 0 :(得分:0)
我仍然没有对此有明确的答案,但在我的试验中,我注意到了一些事情(最重要的是通过VBA设置页眉和页脚是非常古怪的):
我在中间页脚部分(以一串下划线的形式)有一个水平条,横跨整个页面宽度。我注意到如果我大大减小了条的宽度,那么错误消失了。但是,栏需要跨越整个页面宽度,因此这不是一个可接受的解决方案,只是观察
我有一个单独的程序来设置页面的页眉和页脚。我通过程序的参数传递了页脚的文本。但是,我注意到,如果我将其他所有内容保持不变,只是将参数变量(连接文本时)覆盖了硬编码值,错误消失了。同样,这不是一个选项,因为该值不能被硬编码。
此外,在连接字符串时,我直接调用了一个函数(返回了String
)。但是,如果我用局部变量替换函数调用,则错误消失。我做了这个改变,但由于其他因素,我仍然得到错误。
如果我发现任何其他内容,我会尝试更新此答案,或者通过"真实"答案。
<强>更新强>
我最后只是将水平条从下划线转换为图像,然后我开始工作了。所以我猜中心部分的下划线,但左右两部分重叠导致了某种问题。我还没有尝试过添加斜体样式,我想不出来。它正在工作,我花了太多时间在这上面。