试图避免在复制数据时使用Sheet.Activate
在Excel 2013上运行,我很难过。 我试图避免激活工作表(更不用说多行代码)只是为了复制数据。 为什么会这样工作:
Sheets("DataDump").Activate Range(Cells(startJobRow, 1), Cells(lastJobRow, 5)).Copy Sheets("DataRaw").Cells(lastDataRawRow + 1, 1)
但是这不是:
Sheets("DataDump").Range(Cells(startJobRow, 1), Cells(lastJobRow, 5)).Copy Sheets("DataRaw").Cells(lastDataRawRow + 1, 1)
第二个代码给我“运行时错误'1004':应用程序定义或对象定义的错误”。 如果我在debugging模式下手动select工作表“DataDump”,并告诉它继续,那么它工作的很好。
在第二个示例中,您使用的Cells()不合格,这可能会导致问题。
在这种情况下,Cells()是在引用代码行的时候引用哪个表单处于活动状态。
在这种情况下,您需要完全限定Cells()。
这应该做到这一点:
With Sheets("DataDump") .Range(.Cells(startJobRow, 1), .Cells(lastJobRow, 5)).Copy Sheets("DataRaw").Cells(lastDataRawRow + 1, 1) End With