首页 > 解决方案 > 将多个范围添加到打印区域

问题描述

我有十二个不同的范围,我可能需要包括打印区域。到目前为止,这是我的代码的一部分:

With ActiveSheet.PageSetup
    If 'condition is met' Then
        .PrintArea = Range(rng1)
        .PrintArea = Union(Range(.PrintArea), rng1).Address
    End If
    'more lines of like code
End With

有几行这样的代码,我知道这种类型的编码不是好的做法,但我需要尽快完成这个项目。我的问题是如何将所需的范围添加到打印区域,因为现在它似乎只打印设置为打印区域的最新范围?

标签: vbaexcelprinting

解决方案


打印区域是一个String,而不是一个Object。所以你可以这样写:

.PrintArea = "$A$19:$J$32, $A$11:$J$17, $A$34:$J$38"

或者您可以使用String变量。如果您坚持范围,请使用.Address以下方式:

Dim rng1 As Range, rng2 As Range, rUni As Range
.PrintArea = rng1.Address & "," & rng2.Address

或者

Set rUni = Union(rng1, rng2)
.PrintArea = rUni.Address

两个最新示例都生成了与第一个示例中的字符串类似的字符串。

有趣的是,以这种分散的方式设置打印区域会导致打印所有单独的范围以分隔页面。我不知道如何解决它。


推荐阅读