[英]Subscript out of range error on array
我正在尝试将ID(整数)列表读入Excel宏中的一维数组。
我已经计算了在上一步中需要输入的ID数量,因此知道我的数组大小是多少。 现在,我想创建一个数组并将值读入该数组。 下面的代码在我将“ RowID”读入数组的那一行上显示了“运行时错误9,下标超出范围”消息。 请让我知道我做错了什么。
注意:PD_incD是要读入数组的id的计数。
Dim AIN As Integer 'Array index
Dim PD_IncD_Array() As Variant
ReDim PD_IncD_Array(1 To PD_IncD) As Variant 'Create array for recording section IDs
AIN = 1 'Reset value
RowID = PD_1stRow 'Reset first row to begin search
Do While Not IsEmpty(Worksheets("Piping Data").Cells(RowID, 3).Value)
If Worksheets("Piping Data").Cells(RowID, 3).Value = 1 Then
PD_IncD_Array(AIN, 1) = RowID
AIN = AIN + 1
Else
RowID = RowID + 1
End If
Loop
MsgBox (PD_IncD_Array(AIN, 1))
错误是正确的,但原因与您的逻辑有关。
如果if语句的第一部分为true,则永远不会增加RowID
。 这将使您陷入无限循环,但是由于您正在为数组分配值,因此您首先会遇到超出范围的错误。
我不确定您的确切逻辑,但我猜想您想像这样在每个循环中增加RowID
:
Do While Not IsEmpty(Worksheets("Piping Data").Cells(RowID, 3).Value)
If Worksheets("Piping Data").Cells(RowID, 3).Value = 1 Then
' ReDim Preserve PD_IncD_Array(UBound(PD_IncD_Array) + 1)
PD_IncD_Array(AIN, 1) = RowID
AIN = AIN + 1
End If
RowID = RowID + 1
Loop
使用(x,y)语法时,您引用的数组好像有2个维。 您只有一个具有1维的数组,因此您将得到该错误。 只需删除“,1”-在这里没有用。
你应该能够分配PD_IncD_Array
,为AIN
之间1
和PD_IncD
。 您可能不满足此条件。
检查PD_IncD
和AIN
的值PD_IncD
出错(可以使用MsgBox
或调试)。 还要澄清引发错误的行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.