我正在尝试扩展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”,我不知道为什么,它与上面完全相同。我还尝试使用;
代替,
,但它没有弄清楚。如果您有任何想法,请告诉我,我很乐意听取。
谢谢,克莱门特
答案 0 :(得分:2)
使用.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")
访问该范围。
如果anoyne怀疑英文名称
Print_Area
在本地化Office版本中的行为,我们不会遇到任何问题,因为Print_Area
总是有效,即使名称管理员显示本地化名称Print_Area
。
答案 1 :(得分:2)
我希望您的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