[英]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.