0

假设您从数据库中获得了一串数组维度。它看起来像这样:"[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),"][")

它给了我一个类型不匹配的错误

4

3 回答 3

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
于 2012-11-16T14:20:07.970 回答
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)
于 2012-11-16T14:17:46.507 回答
0

您可以始终使用集合/字典而不是数组,它们不必根据需要键入和扩展

于 2012-11-16T15:28:34.433 回答