假设您从数据库中获取了一串array-Dimensions。它看起来像这样:"[1][2][1]"
现在你有一个相应的值,我们称之为B
我必须创建一个这种格式的数组:(x,(B))
如果是另一个值,我们称之为A有这个Dimension-String:[1][1]
,数组应该像这样填充:(A,(B))
如果偶然存在另一个名为C且带有字符串[1][2][2]
的值,则该数组应该如下所示:(A,(B,C))
Redim Array1(1)
Redim Array2(1)
Array1(0) = A
Array2(0) = B
Array2(1) = C
Array1(1) = Array2()
但这是一种动态的方式。在我看来,vba不支持嵌套数组。 不幸的是,多维数组不起作用,因为“维度”不一致。任何帮助赞赏
编辑: 尝试过:
c = 0
dim array1() as Variant
redim preserve array1(c)
array1(c) = split(mid("[1][4]",2,len("[1][4]")-2),"][")
它给了我一个类型不匹配错误
答案 0 :(得分:1)
这有效:
Private Sub testArray()
Dim DynamicArray1() As Variant
Dim DynamicArray2() As Variant
ReDim DynamicArray1(1)
ReDim DynamicArray2(1)
DynamicArray1(0) = "A"
DynamicArray2(0) = "B"
DynamicArray2(1) = "C"
DynamicArray1(1) = DynamicArray2
End Sub
Sub test2()
Dim c As Integer: c = 0
Dim array1() As Variant
ReDim Preserve array1(c)
array1(c) = Split(Mid("[1][4]", 2, Len("[1][4]") - 2), "][")
End Sub
答案 1 :(得分:0)
您可以在VBA中嵌套数组。您只需确保父数组是变体数组。任何“子”数组都可以是您想要的任何类型。在这种情况下,父数组的元素仍然是变体,但恰好是数组的变体。以下是如何使用它的示例:
Dim array1(1)
Dim array2(1 To 2) As String
array2(1) = "Hello"
array2(2) = "World"
array1(1) = array2
'Usage explanation:
'array1(1) returns the first element of parent array
'array1(1)(1) returns the first element of the returned element.
MsgBox array1(1)(1) & " " & array1(1)(2)
答案 2 :(得分:0)
您可以始终使用集合/字典而不是数组,它们不必键入并根据需要进行扩展