我想使用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
有人可以解释为什么它不起作用以及如何使用整数变量来定义我的行而不是字母?
答案 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
希望这可能会有所帮助。