【发布时间】:2016-08-22 17:30:40
【问题描述】:
我有一个代码,我开始在一个 sub 中填充一个数组。稍后在另一个子中,我试图用其他信息填充相同的数组。它不起作用,因为我收到运行时错误 9。我被告知我不能这样做,因为 redim 不适用于我的数组的第一维。
我的问题是有另一种方法可以完成这项工作吗?以下是我目前所拥有的。
发生错误:
Sub PartTwo()
ReDim WorkArray(1 To GEMclass.NumofP, 1 To 4)
For c = 1 To UBound(FullArray, 1)
If GEMclass.g = FullArray(c, 1) Then
Count = Count + 1
WorkArray(Count, 1) = FullArray(c, 1)
WorkArray(Count, 2) = FullArray(c, 4)
WorkArray(Count, 3) = FullArray(c, 7)
WorkArray(Count, 4) = FullArray(c, 6)
End If
Next c
ReDim Preserve WorkArray(1 To GEMclass.NumofP, 1 To 4)
CumulativePartners = GEMclass.NumofP
End Sub
Sub PartThree()
For e = 1 To Count
If dict.Exists(WorkArray(e, 2)) Then
TempCP = CumulativePartners
CumulativePartners = CumulativePartners + dict(WorkArray(e, 2)).NumofP
For f = 1 To UBound(FullArray, 1)
If WorkArray(e, 2) = FullArray(f, 1) Then
For g = 1 To dict(WorkArray(e, 2)).NumofP
Dim test As Integer
test = TempCP + g
WorkArray(test, 1) = FullArray(f, 1)<---Runtime error 9
WorkArray(test, 2) = FullArray(f, 4)
WorkArray(test, 3) = FullArray(f, 7)
WorkArray(test, 4) = FullArray(f, 6)
Next g
End If
Next f
ReDim Preserve WorkArray(1 To CumulativePartners, 1 To 4)
Else
MsgBox "No"
End If
Next e
End Sub
【问题讨论】:
-
出现错误时
test和UBound(WorkArray, 1)的值是多少? -
第 1 步:使用
Option Explicit并了解变量范围。WorkArray在哪里声明?谁在打电话给PartTwo?谁在打电话给PartThree? -
test的值为3,值为。你的意思是ubound Fullarray的值吗?答案是 25
-
我正在使用显式选项。变量在另一个子 (Partone) 中声明。第一部分也调用了 PartTwo 和 PartThree。
标签: arrays vba excel multidimensional-array