gpt4 book ai didi

vba - 如何通过枚举值来声明(初始化)一维和二维固定大小的数组?

转载 作者:行者123 更新时间:2023-12-04 22:01:53 25 4
gpt4 key购买 nike

我想将常量名称对存储在二维字符串数组中。我可以写:

Dim a(2, 1) As String     '0 to 2, and 0 to 1
a(0, 0) = "one"
a(0, 1) = "first"
a(1, 0) = "two"
a(1, 1) = "second"
a(2, 0) = "three"
a(2, 1) = "third"

但是我认为如果我让 VBA 通过查看即时给定的内容来设置数组的大小,它会更优雅和更可扩展。我想象这样的事情:
 Dim a({"one","first"}, _
{"two","second"}, _
{"three","third"}) as String

然后我意识到我什至不知道如何通过即时枚举(初始化)来声明一维数组。

这可能吗?如果是,如何?

是否有涵盖此 Q 的官方文档? ( This 不是。)

最佳答案

使其更优雅的最合理方法是创建基于给定字符串创建 2D 数组的新函数。

它可能如下所示:

Public Function create2DStringArray(ParamArray values() As Variant) As String()
Dim varItem As Variant
Dim strArray() As String
Dim arraySize As Long
Dim result() As String
Dim iterator As Long
'-------------------------------------------------------------------------------------------------

On Error Resume Next
arraySize = UBound(values) - LBound(values) + 1
On Error GoTo 0


ReDim result(0 To arraySize - 1, 0 To 1)


For Each varItem In values
strArray = VBA.Split(varItem, ";")
result(iterator, 0) = strArray(0)
result(iterator, 1) = strArray(1)
iterator = iterator + 1
Next varItem


create2DStringArray = result


End Function

现在,您可以像这样初始化您的 String 数组:
Dim a() As String
a = create2DStringArray("one;first", "two;second", "three;third")

请注意,上面的函数有一些限制:
  • 它最多只能使用 30 个参数,
  • 如果任何给定的字符串在内部包含分号,则它不起作用(除非您选择了另一个分隔符,我在上面使用了分号)。
  • 关于vba - 如何通过枚举值来声明(初始化)一维和二维固定大小的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33255576/

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