2017-01-30 69 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