2016-01-22 41 views
0

因此,而簡單地予定義的測試功能:VBA範圍不被分配到一個Array

Option Base 1 
Function TestFunction(InputRange As Range) 
    Dim TestArray() As Variant 
    TestArray = InputRange 

    Debug.Print TestArray(5) 
End Function 

我然後調用它與= TestFunction的片材(A:A),和期望看到的值第5行打印到立即窗口。相反,我沒有得到任何輸出。 A的前100行左右有數據,所以我期望TestArray(5)輸出一些東西。

我也試着改變以上:

TestArray = InputRange.Value 

和:

TestArray = Range(InputRange) 

的這一切似乎工作。

+3

嘗試'Debug.Print TestArray(5,1)'雖然這是一列它仍然是一個二維數組 –

+0

@ScottCraner是關於正確(儘管當你將它設置爲InputRange.Value時,你可以簡單地聲明爲TestArray而不是TestArray(),我希望你不要試圖將A:A賦值給一個變量代碼 - 這將是一個超過一百萬條目的數組 –

+0

這是我的問題。非常感謝!如果你想發佈這個答案我會接受它。@ScottCraner – pyskell

回答

3

問題是,當將一個範圍分配給一個數組時,它將變成一個二維數組,而不管它是一列還是一行。因此,所有引用必須引用它作爲一個二維數組:

Debug.Print TestArray(5,1)