用户已定义要在Excel中打印的命名范围。
我正在将这些范围读入VBA数组。有没有办法将范围名称提供给Union方法以设置不连续的打印范围。
例如,类似于:
ActiveSheet.PageSetup.PrintArea = Union(Range(array(1)), Range(array(2))).Address
阵列中保留的范围数可以变化。我已经尝试循环遍历数组并构建一个字符串变量,但没有成功。
任何帮助都将不胜感激。
答案 0 :(得分:2)
您必须替换语句中的实际范围名称或对象,但以下是如何使用Union
函数设置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