Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在VBA Excel中定义数组并向数组中添加值_Arrays_Vba_Excel - Fatal编程技术网

Arrays 在VBA Excel中定义数组并向数组中添加值

Arrays 在VBA Excel中定义数组并向数组中添加值,arrays,vba,excel,Arrays,Vba,Excel,我有一个“输入数组”(listcount不是固定的)。我需要为“输入数组”中的每个项创建一个新数组,并将每个项添加为其自己数组的第一项 我无法定义数组的大小,因为子数组的数量不是固定的 应该如何定义它?根据您给出的描述,遵循我的建议 请给我们您的反馈 Private Function AmazingFunction(inputArray As Variant) Dim size As Long Dim i As Long Dim tmp As Variant Di

我有一个“输入数组”(listcount不是固定的)。我需要为“输入数组”中的每个项创建一个新数组,并将每个项添加为其自己数组的第一项

我无法定义数组的大小,因为子数组的数量不是固定的


应该如何定义它?

根据您给出的描述,遵循我的建议

请给我们您的反馈

Private Function AmazingFunction(inputArray As Variant)
    Dim size As Long
    Dim i As Long
    Dim tmp As Variant
    Dim newArray() As Variant

    size = UBound(inputArray) ' Array size
    ReDim newArray(size) ' Resizes another array to the same size

    For i = 0 To size ' For each value
        tmp = CreateArray(length:=0) ' Allows you to dynamically create arrays
                                     ' In this case, an array of only one element is created.
        tmp(0) = inputArray(i) ' Sets the value of the first array element
        newArray(i) = tmp
    Next

    AmazingFunction = newArray
End Function
动态创建阵列的辅助功能:

Private Function CreateArray(length As Long)
    Dim arr() As Variant
    ReDim arr(length)
    CreateArray = arr
End Function
以下是如何使用该函数的示例:

Private Sub UseTest()
    Dim outArray As Variant
    Dim intArray As Variant
    Dim element As Variant

    Dim inputArray(2) As Variant

    inputArray(0) = "a"
    inputArray(1) = "b"
    inputArray(2) = "c"
    outArray = AmazingFunction(inputArray)

    For Each intArray In outArray
        For Each element In intArray
            Debug.Print element
        Next
    Next
End Sub

什么?欢迎来到S.O!你试过什么吗?如果是这样,请提供代码,查看和。
Redim
(这太短了,所以)。您可以考虑使用
集合
对象,因为这些对象在大小变化方面更具动态性和灵活性。感谢您抽出时间!我必须将代码更改为ReDim newArray(size),因为我遇到了一个间隔外错误。