【发布时间】:2012-06-26 18:27:27
【问题描述】:
我正在使用 Excel VBA 中的二维数组。我有一个功能...
Public Function constructStack(vbr() As Variant, hr As Integer) As stack
stack 是我创建的一个类。我有另一个函数,我从中调用constructStack。这是电话:
Set stacks(i) = stack(i).constructStack(vbr(i), i)
vbr 恰好是一个二维数组。看到 vbr(i) 将引用类型变体的单个二维数组,我很困惑为什么我得到“类型不匹配:预期的数组或用户定义的类型”编译错误。
就好像编译器没有意识到 vbr() 将填充 24 个二维数组,这就是它给我编译错误的原因。这是我调暗 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 完全相同的类型 - 二维数组的数组。如果有人对此问题有任何意见,将不胜感激。
【问题讨论】:
标签: excel argument-passing multidimensional-array vba