arrays - 如何在 VBA 中重新保存锯齿状数组(数组中的数组)?

标签 arrays excel vba jagged-arrays

我在 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/

相关文章:

c - 在函数外部使用 3d 数组

arrays - 基于ruby中的多个属性从对象数组中删除重复项

java - 使用循环java按每个元素中的位数从最大到最小对数组进行排序

excel - VBA 简单 Vlookup 到关闭的工作簿 - 语法错误

excel - Instr 函数未找到子字符串

javascript - 如何输出数组中所需的元素

excel - 如何从 Excel 生成一封电子邮件,其中考虑到选择了多少行

excel - 查找列表中小于另一个的值

Excel VBA 帮助文档安装

mysql - VBA Excel 在不同工作表的表格中查找数据