Excel vba使用范围(单元格)

Excel vba使用范围(单元格),excel,vba,range,Excel,Vba,Range,我过去大部分的编码都是通过记录,然后找到我需要的部分并在代码中使用它们。我正在尝试做更好的事情,简化简单的功能,比如复制 但我遇到了一个我似乎不明白的问题: Sheets("main").Range(Cells(1, 1), Cells(2, 2)).Copy Sheets("Backup").Range(Cells(1, 1), Cells(2, 2)) 以错误结束:运行时错误1004、应用程序定义错误或对象定义错误 虽然我尝试执行以下操作时没有问题: Sheets("main").Cell

我过去大部分的编码都是通过记录,然后找到我需要的部分并在代码中使用它们。我正在尝试做更好的事情,简化简单的功能,比如复制

但我遇到了一个我似乎不明白的问题:

Sheets("main").Range(Cells(1, 1), Cells(2, 2)).Copy Sheets("Backup").Range(Cells(1, 1), Cells(2, 2))
以错误结束:运行时错误1004、应用程序定义错误或对象定义错误

虽然我尝试执行以下操作时没有问题:

Sheets("main").Cells(lastrowMain, lastcolumn).Copy Sheets("Backup").Range("A" + CStr(lastrowBackup + 1))
我认为问题在于要粘贴到的选定位置的大小,所以我只是将它们匹配为相同的大小,但仍然得到相同的错误


或者我选择一系列细胞的方法是错误的,有更好的方法吗

这是一个常见问题,因为您没有向单元格添加工作表引用。在这种情况下,将假定活动工作表,如果该工作表不是主工作表或备份工作表,则您的范围将跨越不同的工作表,因此会出现错误

相反,完全符合以下条件:

With Sheets("main")
    .Range(.Cells(1, 1), .Cells(2, 2)).Copy Sheets("Backup").Range(Sheets("Backup").Cells(1, 1), Sheets("Backup").Cells(2, 2))
End With

非常感谢,先生!我将确保继续按照这种逻辑工作!