创建一个空的二维数组

问题描述 投票:0回答:1

我不喜欢未初始化的VBA数组,因为每次使用if array is initializedUBound()以避免异常之前,都必须检查For Each,并且没有本机VBA函数来检查它。这就是为什么我初始化数组,至少使用a = Array()将其清空。在大多数情况下,这消除了额外检查的需要,因此一维数组没有问题。

出于相同的原因,我试图创建一个空的2d数组。不能简单地执行ReDim a(0 To -1, 0 To 0),转置1d空数组或类似的操作。我偶然碰到的唯一方法是使用MSForms.ComboBox,将空数组分配给.List属性,然后将其读回。这是在Excel和Word中运行的示例,您需要将UserForm插入VBA Project,在其上放置ComboBox,然后添加以下代码:

Private Sub ComboBox1_Change()

    Dim a()
    ComboBox1.List = Array()
    a = ComboBox1.List
    Debug.Print "1st dimension upper bound = " & UBound(a, 1)
    Debug.Print "2nd dimension upper bound = " & UBound(a, 2)

End Sub

组合更改后,输出为:

1st dimension upper bound = -1
2nd dimension upper bound = 0

实际上,它实际上是调试中的空2d数组:

locals window

是否有一种更优雅的方法来创建一个空的2d数组,而通常不使用ComboBoxUserForm控件?

arrays excel vba multidimensional-array is-empty
1个回答
0
投票

让我知道这是否属于您要实现的目标:

© www.soinside.com 2019 - 2024. All rights reserved.