我正在尝试扩展 Excel 工作表的当前打印区域,但目前使用以下代码。它在第三.PageSetup.PrintArea
中断,我不知道为什么。
代码:
With ActiveSheet
.PageSetup.PrintArea = "$A$1:$A$5"
MsgBox (.PageSetup.PrintArea & "," & .Cells(8, 1).Address & ":" & .Cells(10, 1).Address)
.PageSetup.PrintArea = .PageSetup.PrintArea & "," & .Cells(8, 1).Address & ":" & .Cells(10, 1).Address
MsgBox (.PageSetup.PrintArea & "," & .Cells(15, 1).Address & ":" & .Cells(20, 1).Address)
.PageSetup.PrintArea = .PageSetup.PrintArea & "," & .Cells(15, 1).Address & ":" & .Cells(20, 1).Address
End With
在最后一行,它给我一个"错误400",我不知道为什么,它与上面的一行完全相同。我也尝试过用;
而不是,
,但它没有弄清楚。如果你有什么想法,请告诉我,我会很高兴听到的。谢谢,克莱门特
使用 .Union
(Application.Union Method(:
.PageSetup.PrintArea = Union(.Range("$A$1:$A$5"), .Range(.Cells(8, 1), .Cells(10, 1)), .Range(.Cells(15, 1), .Cells(20, 1))).Address
加入所有 3 个范围。
或使用
.PageSetup.PrintArea = Union(.Range("Print_Area"), .Range(.Cells(8, 1), .Cells(10, 1))).Address
以将区域添加到现有打印区域。
在这里,我们使用的事实,即现有打印区域保存为命名范围Print_Area
我们可以通过以下方式访问 .Range("Print_Area")
.
如果怀疑英文名称
Print_Area
在本地化的Office版本中的行为方式,我们不会遇到任何问题,因为即使名称管理器显示Print_Area
的本地化名称,Print_Area
也始终有效。
我希望您的Windows设置为使用列表分隔符,而不是逗号。在我的例子中,printarea 属性在第二行代码之后返回以下内容(注意分号(:
$A$1:$A$5;$A$8:$A$10
但是为了设置此打印区域,必须将 ; 替换为逗号:
ActiveSheet.PageSetup.PrintArea = "$A$1:$A$5,$A$8:$A$10"
所以 - 在我的系统上 - 为了使您的代码正常工作,我需要使用:
.PageSetup.PrintArea = Replace(.PageSetup.PrintArea, ";", ",") & "," & .Cells(15, 1).Address & ":" & .Cells(20, 1).Address