从返回函数分配范围数组
Posted
技术标签:
【中文标题】从返回函数分配范围数组【英文标题】:Assigning Range array from a returning function 【发布时间】:2014-01-06 03:06:03 【问题描述】:我想要一个范围数组来从中创建图表。
我是这样得到的:
Dim infoR As Range
Dim aRng() As Range
Dim numLvls As Integer
Set infoR = Range("H1:H100");
numLvls = getLevels()
Set aRng() = getOnlyNumericCellToArrayRanges(infoR, numLvls)
函数是这样的:
Function getOnlyNumericCellsRangesArrays(ByVal actRange As Range, ByVal numLvls As Integer) As Range()
Dim aRng() As Range
Redim aRng(0 To numLvls - 1)
'Some code
Set getOnlyNumericCellToArrayRanges = aRng()
End Function
我在互联网上看到了几个数组示例,它们使用变量作为数据类型,但它也不会像那样编译。
我发现它适用于一些更改:
Dim aRng
'Some code
aRng = getOnlyNumericCellToArrayRanges(infoR)
我认为通过引用传递数组是可行的,但是我想知道是否有一种方法可以从一开始就明确地进行数组声明和分配给 Range 数据类型。
或者如何将结果数组转换回 Range 数组?
【问题讨论】:
【参考方案1】:数组不是对象(即使它是对象数组),所以这里不需要Set
...
Sub Tester()
Dim arrRng() As Range, x As Long
arrRng = GetRangeArray()
For x = LBound(arrRng) To UBound(arrRng)
Debug.Print arrRng(x).Address()
Next x
End Sub
Function GetRangeArray() As Range()
Dim arrRng() As Range
ReDim arrRng(1 To 3)
Set arrRng(1) = ActiveSheet.Range("A1")
Set arrRng(2) = ActiveSheet.Range("A3")
Set arrRng(3) = ActiveSheet.Range("A5")
GetRangeArray = arrRng
End Function
【讨论】:
太好了,正如你所说。谢谢。我现在想到了很多关于它的其他问题。你能给我一些资源或一些我可以去的好书吗? 这里的前两本书是非常好的资源:@987654321@以上是关于从返回函数分配范围数组的主要内容,如果未能解决你的问题,请参考以下文章