2014-01-06 48 views
1

我想要一個範圍數組來創建它們的圖表。從返回函數分配範圍數組

這裏是我怎麼過的:

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數組?

回答

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 
+0

大,它的工作如你所說。謝謝。回想我現在有很多關於它的其他問題。你可以給我一些資源或一些好書嗎? –

+0

這裏的前兩本書是非常好的資源:http://www.amazon.com/Best-Excel-VBA-Books/lm/3P9T4WT9MA29P –