2016-03-01 90 views
0

當我使用Range.Value函數時,我有大量的單元格(大約30,000行,60列)溢出。這似乎發生,因爲由Range.Value函數創建的內存託管數組不夠大。如果我聲明一個數組,那麼它工作得很好。所以我需要一個動態數組變量,我可以將其設置爲等於Range.Value,將數據傳輸到工作表上的其他位置,然後重新初始化它以用於下一個大範圍。我無法爲我的生活找到有關如何重新初始化動態數組的信息。重新初始化動態數組

如果我使用Erase myArray,那麼似乎我不能再賦值給變量,但我不能再Dim數組。如果我Redim,我將不得不創建很多複雜的函數來手動查找我的數組的大小。這裏有什麼竅門?

+0

我想我在這裏錯過了一些東西,但'Redim'應該簡單地工作,這是最好的解決方案。你能舉一個例子說明爲什麼它使你的代碼複雜化了嗎? – David912

回答

1

您可以用新的範圍值覆蓋現有的數組。

如果新範圍內的行數/列數少於以前分配給數組的數組,它仍然會擦除之前在數組中的所有數據 - 只有新的範圍值被分配給數組。

Sub populateArray() 

    Dim arrValues() As Variant 

    arrValues = Range("B1:B6") 
    arrValues = Range("A1:A4") 

End Sub 

arrValues將只包含4行數據的Range("A1:A4")被分配後,即使有先前6行分配Range("B1:B6")數據。