2017-01-30 27 views
0

我想知道如何在空動態數組中添加一個值。VBA - 將單元格值附加到空數組

我已經定義以下數組裏面是空的

Dim ratioArray As Variant 

然後,基於特定IF-條件我想如果條件爲真追加值。所以我嘗試了下面的內容,但它返回運行時錯誤'13'。

ReDim Preserve ratioArray(UBound(ratioArray) + 1) 
ratioArray = Cells(8+a,4+o) 

a和o是整數變量。

ReDim Preserve有什麼問題?

在此先感謝!

+1

誤差可能不與ReDim語句但下一行'ratioArray =細胞(8 + A,4 + O)'你不告訴vba放入哪個槽中:'ratioArray(Ubound(ratioArray))= Cells(8 + a,4 + o)' –

+0

實際上,當我運行代碼時,它會在ReDim語句中給出錯誤。我只是運行你的建議,也給運行時錯誤'13'。 – vbalearner

+1

首先,你需要一個'Dim ratioArray()As Variant'而不是'Dim ratioArray As Variant' – tretom

回答

0

只是一個例子作爲工作溶液:因爲該變種是不知道在那個時間的陣列

Sub Test() 

    Dim ratioArray() As Variant 

    ReDim ratioArray(1) 
    ReDim Preserve ratioArray(UBound(ratioArray) + 1) 
    ratioArray(1) = Cells(1, 1) 
End Sub 
+0

感謝tretom。它正在工作。我需要定義數組的維度並重新包含第一個元素。它解決了我的問題! – vbalearner

+0

我想在數組a()的末尾追加數組b(),它將把值的序列分解到數組c()中。我怎麼辦?我嘗試了兩種不同的方式:i)創建一個函數; ii)c()= a()然後我必須追加數組b(),這是我無法完成的。請幫助一些! – vbalearner

+0

如果我理解正確,你必須將數組a()的長度保存到一個變量中(比如說lenOrigA)Redim用數組a()的長度保存數組a()然後填充數組b從lenOrigA – tretom

0

UBound(ratioArray)失敗。

使其成爲一個數組:Dim ratioArray() As Variant

但是它仍然會失敗,因爲該數組是無量綱的,你需要調用Redim ratioArray(0)在某些時候讀取其Ubound()之前。

在分配一個值,使用索引:

ratioArray(0) = Cells(8+a,4+o) 
+0

感謝亞歷克斯K.問題是陣列無量綱。 – vbalearner

相關問題