【问题标题】:Redim Jagged Arrays VBARedim锯齿状数组VBA
【发布时间】:2026-01-25 03:20:06
【问题描述】:

关于锯齿状数组的快速问题。我有一个大小不会改变的静态容器数组:

Dim StaticArray(1 to 3, 1 to 4, 1 to 12) as variant

我将数组值分配给静态数组中的每个索引,如下所示:

Dim ArrayInput() as Variant
ArrayInput = Array(1,2,3,4,5)
StaticArray(1,1,1) = ArrayInput

将值数组分配给 StaticArray 后,我希望能够灵活地向 ArrayInput 变量添加一个值。

有什么办法可以redim保留StaticArray(1,1,1)中包含的Variant?比如:

Redim Preserve StaticArray(1 to 3, 1 to 4, 1 to 12)(1 to ubound(?)+1)

还是只能修改ArrayInput变量并重新读取?

谢谢!

【问题讨论】:

标签: arrays vba jagged-arrays


【解决方案1】:

我也在想同样的事情!

正如您所提到的,我只能通过创建一个临时数组、重新调整尺寸然后重新分配给原始锯齿状数组来实现这一点。这是我的代码:

Dim StaticArray(1 To 3, 1 To 4, 1 To 12) As Variant
Dim ArrayInput() As Variant
Dim TempArray() As Variant

ArrayInput = Array(1, 2, 3, 4, 5)
StaticArray(1, 1, 1) = ArrayInput

'Instead of redim, store array temporarily
TempArray = StaticArray(1, 1, 1)

'Redim the temporary
ReDim Preserve TempArray(UBound(TempArray) + 1)

'Asign value
TempArray(UBound(TempArray)) = 6

'Then store again on statick array
StaticArray(1, 1, 1) = TempArray

【讨论】: