ReDim现有的第二维数组?

Mor*_*lst 5 arrays excel vba excel-vba

我在我的VBA函数中声明了一个具有动态大小的数组.由于我不能ReDim二维或更多维数组的第一个维度,我可以在集合数组中添加第二个维度吗?

这就是我动态设置数组大小的方法.

Dim nameArray() As String
Dim arrayCount As Long

For i = 1 To 100
    ReDim Preserve nameArray(1 to arrayCount)
    nameArray(arrayCount) = "Hello World"
    arrayCount = arrayCount + 1
Next i
Run Code Online (Sandbox Code Playgroud)

现在我想添加第二个维度.

ReDim Preserve nameArray(1 To arrayCount, 1 To 5)
Run Code Online (Sandbox Code Playgroud)

不起作用.

有解决方法吗?

Jea*_*ett 7

没有任何内置方法可以做到这一点.只需创建一个新的二维数组,并将现有的一维数组的内容传输到该新数组的第一行.

这就是这个函数的作用:

Function AddDimension(arr() As String, newLBound As Long, NewUBound As Long) As String()
    Dim i As Long
    Dim arrOut() As String
    ReDim arrOut(LBound(arr) To UBound(arr), newLBound To NewUBound)
    For i = LBound(arr) To UBound(arr)
        arrOut(i, newLBound) = arr(i)
    Next i
    AddDimension = arrOut
End Function
Run Code Online (Sandbox Code Playgroud)

用法示例:

nameArray = AddDimension(nameArray, 1, 5)
Run Code Online (Sandbox Code Playgroud)