Loops VBA运行时错误1004应用程序定义的错误在正确运行后在中间循环弹出

Loops VBA运行时错误1004应用程序定义的错误在正确运行后在中间循环弹出,loops,import,runtime-error,Loops,Import,Runtime Error,我可能需要一些帮助,因为我花了几个小时才发现问题,运气不好 基本上,我在一个模块中有一个代码,它打开另一个工作簿(在下面的代码中称为wbs),并将特定范围(时间序列数据)从“wbs”中的某些工作表复制到主工作簿中的“数据”工作表。代码在源工作表(名为“temp”)中查找最早的日期,匹配目标工作表中的正确行(“data”),然后将所有可用数据从“temp”工作表复制到“data”中的相应列。“数据”工作表有大约70个条目/列,“wbs”有80多个工作表。我添加了“if iserror”语句,以跳过

我可能需要一些帮助,因为我花了几个小时才发现问题,运气不好

基本上,我在一个模块中有一个代码,它打开另一个工作簿(在下面的代码中称为wbs),并将特定范围(时间序列数据)从“wbs”中的某些工作表复制到主工作簿中的“数据”工作表。代码在源工作表(名为“temp”)中查找最早的日期,匹配目标工作表中的正确行(“data”),然后将所有可用数据从“temp”工作表复制到“data”中的相应列。“数据”工作表有大约70个条目/列,“wbs”有80多个工作表。我添加了“if iserror”语句,以跳过“wbs”中不相关的工作表,即“data”中没有相应的条目

代码通常是有效的。但是在循环的中间,我得到一个随机的1004(在循环成功运行了一半的纸张之后),总是在完全相同的地方(i的值)。即使我更改了“wbs”中图纸的顺序,也会发生这种情况,即I的值始终相同。较旧的源文件(具有较少条目的“wbs”版本)工作时没有任何问题。旧版本的“wbs”和新版本的唯一区别在于新版本有更多的数据。有人知道代码产生错误的原因吗

'copy data
For i = 1 To wbs.Worksheets.Count

Set temp = wbs.Sheets(i)
startrow = WorksheetFunction.Match("Date", temp.Range("A:A"), 0) + 2
write_startrow = WorksheetFunction.Match(temp.Cells(startrow, 1), data.Range("A:A"), 0)
lastrow = temp.UsedRange.Rows(temp.UsedRange.Rows.Count).Row

If IsError(Application.Match(temp.Cells(4, 4), data.Range(data.Cells(1, 2), data.Cells(1, data.UsedRange.Columns.Count)), 0)) = False Then
    output_col = WorksheetFunction.Match(temp.Cells(4, 4), data.Range(data.Cells(1, 2), data.Cells(1, data.UsedRange.Columns.Count)), 0)
    data.Range(data.Cells(write_startrow, output_col + 1), data.Cells(write_startrow + lastrow - (startrow + 3), output_col + 1)).Value = temp.Range(temp.Cells(startrow, 2), temp.Cells(lastrow - 3, 2)).Value
    Application.CutCopyMode = False
End If

Next i