带偏移的ActiveSheet.paste给出错误

时间:2015-08-16 04:51:07

标签: excel vba

您好我是VBA的新手,我正在设计一个程序。它只是选择Sheet2并从单元格A1复制一些东西。然后,它从单元格A1中选择Sheet1和偏移量,并粘贴到新选择的单元格。代码如下。

Sub Test()
   Worksheets("Sheet2").Activate
   ActiveSheet.Range("A1").Activate
   Selection.Copy
   Worksheets("Sheet1").Activate
   ActiveSheet.Range("A1").Activate
   ActiveCell.Offset(1, 1).Activate
   ActiveSheet.PasteSpecial
End Sub

奇怪的是,如果我将行.Offset(1,1)更改为.Offset(1),程序将正常工作。如果我不这样做,我会收到运行时错误' 1004'应用程序定义或对象定义的错误。

我知道有更好的方法可以解决这个问题,而不是使用选择,虽然这些对我很有意思,但我也想知道问题的原因。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

你可能遇到问题,执行一个特殊情况你应该选择一个单元格,通过微软指南,他们已经在下面概述了它。由于您是VBA的新手,因此最好避免.activate在不选择单元格的情况下进行复制/粘贴的良好习惯。您的代码的示例如下:

Sub Test() Worksheets("Sheet2").Range("A1").Copy Worksheets("Sheet1").Range("A1").Offset(1,1).Paste End Sub

Microsoft

答案 1 :(得分:0)

只需运行如下所示的精确副本就可以将副本放入最后一页

    Sub Test()
    Dim ws1 As Worksheet
    Set ws1 = ThisWorkbook.Worksheets("Master")
    ws1.Copy ThisWorkbook.Sheets(Sheets.Count)
    End Sub

** Copy an entire worksheet to a new worksheet in Excel 2010

您也可以使用下面的内容         表格(“Sheet1”)。范围(“A1:B10”)。复制目的地:=表格(“Sheet2”)。范围(“E1”)

    'Method 2
    'Copy the data
    Sheets("Sheet1").Range("A1:B10").Copy
    'Activate the destination worksheet
    Sheets("Sheet2").Activate
    'Select the target range
    Range("E1").Select
    'Paste in the target destination
    ActiveSheet.Paste

    Application.CutCopyMode = False

End Sub