无法解决错误代码9

时间:2016-12-14 12:26:24

标签: vba

我正在尝试创建一个日志文件。当尝试执行此代码时,我得到错误9;下标超出范围。

我真的很感谢你的帮助,代码似乎适用于其他文件(一年中每个月1个)但不适用于所有人,我不明白。

! [我的密码] http://imgur.com/a/w6xmd

这也是我关于VBA的第一个问题,所以如果您需要更多屏幕截图或信息,请务必询问。

    Sub Information()

    Dim x, y, z, g, h, f, e, d As Integer

'  ---------------------------------------------------------------------------------------------------------------------
'   Departure

    x = 6
    y = 12
    z = 2
    f = 2
    g = 16
    e = 1

    For i = 1 To 300000000
        If e > 30000000 Then
            f = f + 1
            e = 1
            z = 2
        Else
            If Worksheets("Arrival").Cells(f, 15).Value = Worksheets("Information").Cells(z, x).Value Then
               Worksheets("Arrival").Cells(f, 16).Value = Worksheets("Information").Cells(z, 3).Value
               Worksheets("Arrival").Cells(f, 14).Value = Worksheets("Information").Cells(z, 4).Value
               Worksheets("Arrival").Cells(f, 17).Value = Worksheets("Information").Cells(z, 5).Value
               Worksheets("Arrival").Cells(f, 18).Value = Worksheets("Information").Cells(z, 11).Value
               Worksheets("Arrival").Cells(f, 19).Value = Worksheets("Information").Cells(z, 7).Value

                z = 2
                f = f + 1


            Else

               z = z + 1
               e = e + 1
            End If
        End If
    Next i

    End Sub

事先感谢很多,

杰森

2 个答案:

答案 0 :(得分:0)

声明所有变量:

Dim x as long
Dim y as long
dim z as long
etc.

然后再试一次。可能它会起作用。

顺便说一句,excel只有2 ^ 20行,有点超过100万。您在循环中使用了3000万。试着去想别的事。

答案 1 :(得分:0)

我建议把

Debug.Print f, z, x
在有问题的陈述之前

,监视您在工作表中引用的值。

工作表中的行数和列数限制为:

  • 1,048,576行
  • 16,384列

我怀疑x的值对于语句中的列数已经太高了

  

If Worksheets("Arrival").Cells(f, 15).Value = Worksheets("Information").Cells(z, x).Value Then

因此下标超出范围。但它也可能是引用行的任何其他数字(f或z)。

Debug.Print声明之前的这些值应该清楚。

p.s。:你还要声明所有变量,以避免进一步的问题。

Dim x As Long, y As Long , z as Long, ....