下标数组超出范围错误

我试图读取一个Excel(整数)到一个Excelmacros中的一维数组列表。

我已经统计了需要在上一步input的ID的数量,因此知道我的数组大小需要。 现在我想创build一个数组,并将值读入该数组。 下面是给我一个“运行时错误9,下标超出范围”的消息的代码,我正在阅读“RowID”到数组中的行。 请让我知道我做错了什么。

注意: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” – 这里没有任何目的。

您应该能够为1PD_IncD之间的AIN分配PD_IncD 。 你很可能不满足这个条件。

检查错误的PD_IncDAIN的值(可能使用MsgBox或debugging)。 还要弄清错误的路线。