Excel 2010 VBA – 运行时错误1004 – 使用匹配将范围从一个工作表复制到另一个工作表

我看不出我哪里出了问题

Dim Sheet1RowNumber As Variant, Sheet28RowNumber As Variant, sStaffName As String sStaffName = Worksheets(1).Cells(7, 1).Value Sheet28RowNumber = Application.Match(sStaffName, Worksheets(28).Range("a:a"), 0) Sheet1RowNumber = Application.Match(sStaffName, Worksheets(1).Range("a:a"), 0) Worksheets(1).Range(Cells(Sheet1RowNumber, 2), Cells(Sheet1RowNumber, 8)) = Worksheets(28).Range(Cells(Sheet28RowNumber, 2), Cells(Sheet28RowNumber, 8)) 

当您从当前未选中/激活的工作表引用多单元格时,VBA不喜欢它。 (奇怪的是,这不是单细胞范围的问题…)无论如何,这就是在这种情况下导致你的错误。 本声明涉及两张不同纸张上的多单元格范围:

 Worksheets(1).Range(Cells(Sheet1RowNumber, 2), Cells(Sheet1RowNumber, 8)) = _ Worksheets(28).Range(Cells(Sheet28RowNumber, 2), Cells(Sheet28RowNumber, 8)) 

通过将要复制的范围存储在缓冲区(下面的temp )中,可以将它分成两行。 在每个陈述之前,激活适当的表格。 这工作:

 Dim Sheet1RowNumber As Variant, Sheet28RowNumber As Variant, sStaffName As String Dim temp As Variant sStaffName = Worksheets(1).Cells(7, 1).Value Sheet28RowNumber = Application.Match(sStaffName, Worksheets(2).Range("a:a"), 0) Sheet1RowNumber = Application.Match(sStaffName, Worksheets(1).Range("a:a"), 0) Worksheets(2).Activate temp = Worksheets(2).Range(Cells(Sheet28RowNumber, 2), Cells(Sheet28RowNumber, 8)) Worksheets(1).Activate Worksheets(1).Range(Cells(Sheet1RowNumber, 2), Cells(Sheet1RowNumber, 8)) = temp