繁体   English   中英

Excel VBA传入2D数组的数组

[英]Excel VBA Passing in an array of 2D arrays

我正在使用Excel VBA中的2D数组数组。 我有功能...

Public Function constructStack(vbr() As Variant, hr As Integer) As stack

我在哪里做的是堆栈。 我有另一个函数,我从中调用constructStack。 这里是电话:

Set stacks(i) = stack(i).constructStack(vbr(i), i)

vbr恰好是2D阵列的阵列。 看到vbr(i)指的是类型变量的单个2D数组,我感到困惑,为什么我会收到“类型不匹配:预期为数组或用户定义类型”的编译错误。

几乎好像编译器没有意识到vbr()将被24个2D数组填充,这就是为什么它给了我编译错误。 这是我如何暗淡vbr:

Dim vbr(1 To 24) As Variant

声明vbr之后,我最终运行此for循环,为vbr的每个元素分配一个2D数组...

vb = GetVBRSorted
For j = 1 To 24
    For i = 2 To 2000
        If (vb(i, 1)(j) <> "") Then
          lastFilleds(j) = i
        End If
    Next
Next
For j = 1 To 24
    ReDim vbrTemp(1 To lastFilleds(j) - 1, 1 To 5)
    For i = 2 To lastFilleds(j)
        For k = 1 To 5
            vbrTemp(i - 1, k) = vb(i, k)(j)
        Next
    Next
    vbr(j) = vbrTemp
Next

GetVBRSorted返回与vbr完全相同的类型-2D数组的数组。 如果有人在这个问题上有任何意见,将不胜感激。

您拥有.constructStack(vbr(i), i)的调用正在传递数组的单个元素。 如果要传递整个数组,则可以使用.constructStack(vbr, i)

由于每个vbr(i)都是Variant ,因此必须将其声明为参数类型。 没有神奇的编译时嗅探来实现Variant包含数组。

采用

Public Function constructStack(vbr As Variant, hr As Integer) As stack 

另请参见如何在VBA过程中使用可选的数组参数?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM