如何解决VBA运行时错误1004应用程序定义的错误-正确运行后在循环中间弹出
我可能已经花了数小时来寻找问题,但运气不好。
基本上,我在一个模块中有一个代码,该模块打开另一个工作簿(在下面的代码中命名为wbs),并将某个范围(时间序列数据)从“ wbs”中的某些工作表复制到该工作表中的“ data”工作表中。主要工作簿。该代码在源工作表中查找最早的日期(名为“ temp”),匹配目标工作表中的正确行(“ data”),然后将所有可用数据从“ temp”表复制到“数据'。 “数据”工作表有大约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,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,temp.Cells(lastrow - 3,2)).Value
Application.CutCopyMode = False
End If
Next i
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。