在excel vba中动态设置数组的大小

在excel vba中动态设置数组的大小,excel,vba,Excel,Vba,通过VBA代码,我将确定一个数组的大小,比如knownarray。此数组的大小每次可能不同。根据它的大小,我需要初始化另一个相同大小的数组。我应该怎么做 例如: knownarray() size = 4 现在我需要创建一个大小为4的数组,名为newarray 到目前为止,我所做的工作如下: ReDim NewArray(KnownArray.Size) 我知道这一定很容易,但作为VBA的新手,我被卡住了。有人能帮我吗 提前感谢另一种方法,特别是如果需要第一个数组的值,只需复制现有数组:

通过VBA代码,我将确定一个数组的大小,比如knownarray。此数组的大小每次可能不同。根据它的大小,我需要初始化另一个相同大小的数组。我应该怎么做

例如:

knownarray() size = 4  
现在我需要创建一个大小为4的数组,名为newarray

到目前为止,我所做的工作如下:

ReDim NewArray(KnownArray.Size)
我知道这一定很容易,但作为VBA的新手,我被卡住了。有人能帮我吗


提前感谢

另一种方法,特别是如果需要第一个数组的值,只需复制现有数组:

Sub Main()

    Dim strArr(2 To 4) As String

    strArr(2) = "element1"
    strArr(3) = "element2"


    ReDim anotherArr(LBound(strArr) To UBound(strArr)) As String

    Debug.Print "the size:" = UBound(anotherArr) - LBound(anotherArr)

End Sub
Dim knownArray(2 To 4) As String

Dim copyArr() As String
copyArr() = knownArray()

这里copyArr是另一个不同的数组,具有相同的维度和值。只有当您也需要这些值时,才会这样做。如果不是,那么答案为[me how]的带边界的ReDim是最好的解决方案。

你说的大小是指Ubound吗?你真的应该考虑LBoundtoo@chrisneilsen谢谢你的评论,但你能详细说明一下吗?你的意思是像LboundstrArr到UBoundstrArr一样吗?OP中没有说明原始数组是否为默认下限。应该使用ReDim。。。绑定到UBound@chrisneilsen哦,我同意,是的,绝对同意