gpt4 book ai didi

vba - 运行时错误 '9' : Subscript out of range with Dynamic Array

转载 作者:行者123 更新时间:2023-12-03 00:10:36 24 4
gpt4 key购买 nike

我试图向动态数组添加一个值,但不断收到运行时错误。我发现了一些不同的消息来源说这应该是答案,所以我无法弄清楚我做错了什么......

Sub addtoarray()

Dim catSheets() As String

ReDim Preserve catSheets(UBound(catSheets) + 1)
catSheets(UBound(catSheets)) = "Chemicals"

End Sub

最佳答案

当您创建 catSheets() 数组时,它是无量纲的。因此,您不能使用 UBound() 来确定数组的上边界。

如果您想指定数组大小,您当然可以在 Dim () 之后使用 ReDim,但您将无法查询数组维度直到你给它一些之后。

所以你有几个选择。首先,您可以在 Dim () 之后立即执行 ReDim 来为数组指定初始大小:

Dim catSheets() As String
ReDim catSheets(0) As String
...
ReDim Preserve catSheets(...) As String

或者,您可以从一开始就使用 ReDim 来分配初始大小,并且以后仍然可以使用 ReDim:

ReDim catSheets(0) As String
...
ReDim Preserve catSheets(...) As String

或者,您可以使用 Array() 函数并将其存储为 Variant。通过这种方式,您可以查询UBound()。例如:

Dim catSheets As Variant
catSheets = Array()
Debug.Print UBound(catSheets) ' => -1

ReDim Preserve catSheets(UBound(catSheets) + 1)
catSheets(UBound(catSheets)) = "Chemicals" ' Works fine

关于vba - 运行时错误 '9' : Subscript out of range with Dynamic Array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31932346/

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