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

时间:2016-03-25 15:30:09

标签: excel vba excel-vba

我想使用R1C1公式而不是A1公式将工作簿范围内的值复制到另一个工作簿中(因为我希望将行值替换为稍后我的代码中的整数变量。)

所以这段代码对我有用:

 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

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

1 个答案:

答案 0 :(得分:2)

您必须指定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块:

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

希望这可能会有所帮助。