我发现了不同的运行时错误1004问题,但没有一个是完全合适的。
我收到错误1004"应用程序定义或对象定义错误"使用工作簿时(最后一行)。
Dim mainWB As Workbook
Dim mainWS As Worksheet
Set mainWB = ActiveWorkbook
Dim wb As Workbook
Dim WBname As String
For Each wb In Workbooks
If Left(wb.Name, 4) = "D_SO" And Len(wb.Name) > 30 Then
WBname = wb.Name
Exit For
End If
Next
mainWB.Sheets(1).Range(Cells(1, 1), Cells(1600, 300)).Value = Workbooks(WBname).Sheets(1).Range(Cells(1, 1), Cells(1600, 300)).Value
尽管名称正确,但最后一行中的所有Workbooks对象似乎都没有工作。你能找到我的错误吗?
答案 0 :(得分:2)
当您使用Range object
类型的引用时:Range(LeftTopCell, RightBottomCell)
您必须关注括号内的实际内容。
在你的情况下,你总是Activesheet cells
这不是你想要的。因此,您必须以这种方式完全引用单元格:
mainWB.Sheets(1).Range(mainWB.Sheets(1).Cells(1, 1), _
mainWB.Sheets(1).Cells(1600, 300)).Value =
Workbooks(WBname).Sheets(1).Range(Workbooks(WBname).Sheets(1).Cells(1, 1), _
Workbooks(WBname).Sheets(1).Cells(1600, 300)).Value
为了缩短它,您可以考虑使用Range.Copy
方法。