从返回函数分配范围数组

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@

以上是关于从返回函数分配范围数组的主要内容,如果未能解决你的问题,请参考以下文章

如何从函数返回动态分配的指针数组?

C ++:从函数、返回类型或引用中使用和返回字符数组?

分配函数和返回的指针

将下一个空的多单元格范围分配给函数返回的变量

从使用 SwiftyJSON 的函数返回填充数组

如何从函数中返回字符串