如何将二维数组的一维分配给VBA中的新一维数组

Posted

技术标签:

【中文标题】如何将二维数组的一维分配给VBA中的新一维数组【英文标题】:How to assign one dimension of a 2d array to a new 1d array in VBA 【发布时间】:2012-01-13 00:09:25 【问题描述】:

我需要能够创建一个新数组并将其分配给 another2darray(atsomeelement)

例子

array1(0) = 1
array1(1) = 2

现在

array2(0) = array1

因此

array2(0)(0) = 1
array2(0)(1) = 2

现在我想创建一个新数组并将 array2 的 1d 分配给它。

newarray = array2(0)

因此

newarray(0) = 1
newarray(1) = 1

我无法在 VBA 代码中执行此操作。 下面的代码 sn-p,如果您注释掉我尝试将 array2(1) 分配给 arraynew 的最后一部分,则可以使用。

Function test()
    Dim array1(0 To 20) As String
    Dim array2(0 To 5) As Variant
    Dim count As Integer

    For count = 0 To UBound(array1)
     array1(count) = count
    Next count

    'now that array1 is filled i want to insert it into array2(1)
    array2(1) = array1

    ' test
    MsgBox (array2(1)(3))

    'now i want to create a new string array and assign it to array2(1)
    Dim arraynew(0 To 20) As String
    arraynew = array2(1)
    'this is what fails. 

End Function

【问题讨论】:

见***.com/q/8482759/641067 请注意,从技术上讲,您所拥有的是不是二维数组,而是数组数组。那是不同的东西。 (VBA 中也有真正的二维数组。) 【参考方案1】:

您不能分配给固定大小的数组。将其声明为动态的。

Dim arraynew() As String
arraynew = array2(1) 

【讨论】:

@Aden:欢迎来到 ***,如果这个答案适合你,请点击答案左侧的勾号接受它 - 请参阅 meta.stackexchange.com/questions/5234 了解更多信息

以上是关于如何将二维数组的一维分配给VBA中的新一维数组的主要内容,如果未能解决你的问题,请参考以下文章

JS中,如何把一个一维数组赋值给二维数组?

将二维指针数组中的字符串分配给一维指针数组

vba中怎么选取二维数组中的某一行或某一列?

C++二维数组给一维数组赋值

vba基础4 数组

如何利用memcpy将二维指针复制给一维指针?