【发布时间】:2021-10-07 09:40:23
【问题描述】:
注意:我的 Excel 版本是德语,以防万一发生任何变化。这样做的一个问题可能是the VBA codes for headers and footers 的工作方式不同。
我的代码(第一次使用空页脚):
Sub updateFootnote_Click()
Application.PrintCommunication = False
Application.ScreenUpdating = False
Table2.Activate
With ActiveSheet.PageSetup
.LeftFooter = "Cell Value: " & Table1.Cells(15, 4).Value
.CenterFooter = ""
.RightFooter = "Test" & Chr(10) & "Seite &S von &A"
End With
Table1.Activate
Application.ScreenUpdating = True
Application.PrintCommunication = True
End Sub
页脚结果 1(初始执行时,页脚为空):
Cell Value: 1 | | Test<\n>Seite 1 von 46
' <\n> = linebreak
页脚结果2(第二次执行方法):
Cell Value: 1 | von &[Register] | Test<\n>Seite 1 von 46
' <\n> = linebreak
页脚结果3(第三次执行方法):
Cell Value: 1 | ~von &[Seite]&[Pfad] von~ | Test<\n>Seite 1 von 46
' <\n> = linebreak
' ~Test~ = *strikethrough formated text*
等等,等等。每次我再次执行该功能时,它都会变得更糟,直到您手动删除页脚。 (使用代码将所有三个页脚部分设置为空字符串不起作用)
最重要的是,代码或引用的单元格值中的想要的更改在第一次成功执行代码后无效。
如果有人能告诉我这里出了什么可怕的问题,我将不胜感激,重复执行几个 setter 方法可能会导致不同的结果,并且在页脚不再为空后,想要的更改会被忽略。
【问题讨论】:
-
激活
Table1和Table2的目的是什么?你真的想更新Table2的页脚而不是ActiveSheet(在执行updateFootnote_Click子时)? -
updateFootnote_Click是从Table1调用的。在禁用屏幕更新的情况下按此顺序激活工作表,从另一个工作表(也称为Table1)更新Table2的页脚 - 而不会明显更改活动工作表。但这只是为了外观,与描述的问题无关。 -
我无法重现您的问题,所以我不确定出了什么问题(其他一些因素?)但是如果您将
With ActiveSheet.PageSetup更改为With Table2.PageSetup,您可以更改Table2's直接使用页脚,因此您实际上不需要禁用ScreenUpdating、PrintCommunication甚至Activate这两个工作表。 -
您的
RightFooter似乎也与页脚结果 1 不匹配,它应该返回Test<\n>Seite _von [Sheet Name]_并在 _ 内的文本中应用删除线。如果您在新工作簿上尝试,会遇到同样的问题吗? -
是的,它与页脚结果 1 匹配。在德文版的 Excel 中,&S 代表页码,&A 代表总页数。我还发现了一个拼写错误的值:它应该是
Table1.Cells(15, 4).Value而不是ControllPanel.Cells(15, 4).Value