我希望有一系列范围来创建图表。
以下是我的方式:
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
我在互联网上看过几个数组示例,他们使用variant作为数据类型,但它也没有像那样编译。
我发现它有一些变化:
Dim aRng
'Some code
aRng = getOnlyNumericCellToArrayRanges(infoR)
我认为通过引用传递数组可能有效,但是我想知道是否有一种方法可以从一开始就明确地对数组声明和Range数据类型进行分配。
或者我如何将结果数组转换回Range数组?
答案 0 :(得分:0)
数组不是对象(即使它是一个对象数组),所以这里不需要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