使用VBA向现有PrintArea添加范围失败,错误为400

时间:2017-05-15 08:47:37

标签: excel vba excel-vba

我正在尝试扩展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”,我不知道为什么,它与上面完全相同。我还尝试使用;代替,,但它没有弄清楚。如果您有任何想法,请告诉我,我很乐意听取。 谢谢,克莱门特

2 个答案:

答案 0 :(得分:2)

使用.UnionApplication.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