您好我是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'应用程序定义或对象定义的错误。
我知道有更好的方法可以解决这个问题,而不是使用选择,虽然这些对我很有意思,但我也想知道问题的原因。
感谢您的帮助。
答案 0 :(得分:2)
你可能遇到问题,执行一个特殊情况你应该选择一个单元格,通过微软指南,他们已经在下面概述了它。由于您是VBA的新手,因此最好避免.activate
在不选择单元格的情况下进行复制/粘贴的良好习惯。您的代码的示例如下:
Sub Test()
Worksheets("Sheet2").Range("A1").Copy
Worksheets("Sheet1").Range("A1").Offset(1,1).Paste
End Sub
答案 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