gpt4 book ai didi

arrays - 创建一个空的二维数组

转载 作者:行者123 更新时间:2023-12-03 14:38:32 24 4
gpt4 key购买 nike

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

出于同样的原因,我尝试创建一个空的二维数组。不可能简单地做ReDim a(0 To -1, 0 To 0) ,转置一维空数组或类似的东西。我偶然遇到的唯一方法是使用 MSForms.ComboBox , 将空数组赋值给 .List属性并将其读回。这是在 Excel 和 Word 中工作的示例,您需要插入 UserForm到 VBA 项目,放置 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

实际上它实际上是调试中的空二维数组:

locals window

有没有更优雅的方法来创建一个空的二维数组,而不使用 ComboBox , 或 UserForm一般控制?

最佳答案

Idk man - 我认为你偶然发现这处房产很疯狂。

我可能会在这里停下来,然后做:

Function Empty2DArray() As Variant
With CreateObject("Forms.ComboBox.1")
.List = Array()
Empty2DArray = .List
End With
End Function

并像这样使用它: a = Empty2DArray
您不需要创建用户表单或组合框 - 您可以使用 CreateObject .

但正如其他人所说,在检查数组是否已初始化时进行错误处理可能更有意义。

关于arrays - 创建一个空的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59568342/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com