使用 VBA 将范围添加到现有打印区域失败,并显示错误 400



我正在尝试扩展 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

相关内容

最新更新