我在 EXCEL VBA 中有一个数组数组(不是二维数组),我需要向内部数组添加元素。
例如。:
Option Explicit
Sub ArrayofArrays()
Dim OuterArray() As Variant
ReDim OuterArray(0 To 0)
Dim InnerArray() As Variant
ReDim InnerArray(0 To 0)
InnerArray(0) = "Foo"
OuterArray(0) = InnerArray
ReDim Preserve OuterArray(LBound(OuterArray) To UBound(OuterArray) + 1)
End Sub
我现在可以通过以下方式访问内部元素:
debug.print OuterArray(0)(0)
打印我“Foo”
但是如何在 OuterArray 中扩展数组呢?
最后一行只向 OuterArray 添加了一个空元素:
ReDim Preserve OuterArray(LBound(OuterArray) To UBound(OuterArray) + 1)
但我想要的是这样的:
¦___OuterArray(0)
¦_____________OuterArray(0)(0): "Foo"
¦_____________OuterArray(0)(1): "条形图"
谢谢!
最佳答案
VBA
不允许你直接ReDim
然而,内部数组,你可以很容易地通过使用中间辅助数组来实现它(在这个例子中名为 tmp
)
Option Explicit
Sub ArrayofArrays()
Dim tmp As Variant
Dim OuterArray() As Variant
ReDim OuterArray(0 To 0)
Dim InnerArray() As Variant
ReDim InnerArray(0 To 0)
InnerArray(0) = "Foo"
OuterArray(0) = InnerArray
tmp = OuterArray(0)
ReDim Preserve tmp(LBound(tmp) To UBound(tmp) + 1)
OuterArray(0) = tmp
Erase tmp
OuterArray(0)(1) = "Bar"
Debug.Print OuterArray(0)(1)
End Sub
关于arrays - 如何在 VBA 中重新保存锯齿状数组(数组中的数组)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54253970/