应用程序定义或对象定义错误

时间:2011-12-14 12:53:13

标签: excel vba excel-vba

我不知道为什么我会在标题中收到错误...我有一小段代码:

Do While ws2.Cells(Rand, 1).Value <> "" And Rand < 65000
    Min = ws2.Cells(Rand, 5).Value
    Data = ws2.Cells(Rand, 1).Value
    If Min <> 0 Then
        Do Until Min = 0
            If Min < MinZi Then
                ws.Cells(lRow, 1).Value = Data
                ws.Cells(lRow, 2).Value = Min / MinZi
                Min = 0
            Else
                ws.Cells(lRow, 1).Value = Data
                ws.Cells(lRow, 2).Value = 1
                Data = DateAdd("d", -1, Data) **'the error is on this line**
                Min = Min - MinZi
            End If
        lRow = lRow + 1
        Loop
    End If
Rand = Rand + 1
Loop

在ws2.Cells(Rand,1)我有一些日期...所以我想阅读ws2中的每一行,只要我有一个日期...如果有一个日期我正在寻找第5栏中的分钟数。 因此,如果分钟数不等于0,那么如果分钟数小于一天中的分钟数,我计算Min代表多少...否则,如果分钟数大于分钟数一天,我将日期添加到不同的工作表中,数字为1(这意味着100%已满),然后我减去一天中的分钟数,直到我有0分钟。 数据定义为日期。 我有什么想法可以得到这个错误吗?

另一个奇怪的是,在工作表缓冲区(ws)中,它添加了与当前日期一样多的行(12/14/2011表示40891行)......我不知道为什么。 有什么想法吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

如果Min > 0 and MinZi = 0,那么内循环将继续,直到出现问题。

摔倒的可能原因:

  • 如果lRow是一个整数,则达到值32767.错误消息:“溢出”。
  • l在您的Excel版本中达到行的最大值。错误消息:“应用程序定义或对象定义的错误”。
  • 数据达到-657434。错误消息:无效的过程调用或争论“。

我相信您的计划会在ws.Cells(lRow, 1).Value = Data而非Data = DateAdd("d", -1, Data)停止。

我建议您调查MinZi,我建议您在寻求帮助之前更多地关注调试器。