Excel VBA – 向Union方法dynamic提供范围
用户已经定义了要在Excel中打印的命名区域。
我正在将这些范围读入VBA数组中。 有没有办法提供范围名称联盟的方法来设置非连续的打印范围。
例如,类似于: ActiveSheet.PageSetup.PrintArea = Union(Range(array(1)), Range(array(2))).Address
数组中保存的范围数量可能会有所不同。 我已经尝试循环数组并build立一个stringvariables,但没有成功。
任何帮助,将不胜感激。
您将不得不replace声明中的实际范围名称或对象,但这里是如何使用Union
function来设置PrintArea
:
Sub foo() Dim setup As PageSetup Set setup = ActiveSheet.PageSetup setup.PrintArea = Union(Range("MyRange1"), Range("MyRange2")).Address End Sub
我实际上正在寻找的是一种使用数组中保存的范围名称构造Union语句的方法
好的,然后使用上面的方法和一个自定义的函数来构造一个循环的Union:
Sub foo() Dim setup As PageSetup Dim RangeArray(1) As Range Set setup = ActiveSheet.PageSetup Set RangeArray(0) = Range("MyRange1") Set RangeArray(1) = Range("MyRange2") setup.PrintArea = GetUnion(RangeArray) End Sub Function GetUnion(arr As Variant) As String Dim itm As Variant Dim ret As Range For Each itm In arr If Not ret Is Nothing Then Set ret = Union(ret, itm) Else Set ret = itm End If Next If Not ret Is Nothing Then GetUnion = ret.Address Else GetUnion = "" 'May cause an error... End If End Function