【问题标题】: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 数组?

【问题讨论】:

    标签: arrays vba


    【解决方案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@
    猜你喜欢
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 2012-06-29
    • 2015-01-06
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    相关资源
    最近更新 更多