Excel vba:使用R1C1公式将范围内的值复制到另一个工作簿

我想复制一个工作簿范围内的值到另一个使用R1C1公式而不是A1公式(因为我想在我的代码稍后用一个整数variablesreplace行值)。

所以这段代码适合我:

  Sub test() Dim x, y As Workbook Set x = ThisWorkbook Set y = Workbooks.Open("myfilepath") x.Sheets(1).Range("A1:B1").Copy y.Sheets(1).Range("A32:B32").PasteSpecial End Sub 

但是,如果我尝试类似的东西(我认为是等价的),它不起作用(我得到一个'1004' error at x.Sheets(1).Range(Cells(1, 1), Cells(1, 2)).Copy ):

 Sub test() Dim x, y As Workbook Set x = ThisWorkbook Set y = Workbooks.Open("myfilepath") x.Sheets(1).Range(Cells(1, 1), Cells(1, 2)).Copy y.Sheets(1).Range(Cells(32, 1), Cells(32, 2)).PasteSpecial End Sub 

有人可以解释为什么它不工作,以及如何使用整数variables来定义我的行而不是字母?

您必须指定Cells的父对象,如

 x.Sheets(1).Range(x.Sheets(1).Cells(1, 1), x.Sheets(1).Cells(1, 2)).Copy y.Sheets(1).Range(y.Sheets(1).Cells(32, 1), y.Sheets(1).Cells(32, 2)).PasteSpecial 

对于更紧凑的代码,你可以使用With blocks:

 With x.Sheets(1) .Range(.Cells(1, 1), .Cells(1, 2)).Copy End With With y.Sheets(1) .Range(.Cells(32, 1), .Cells(32, 2)).PasteSpecial End With 

希望这可能有帮助。