宏复制和粘贴

时间:2014-12-22 22:41:43

标签: excel vba excel-vba

我正在尝试创建一个宏,它将从一个工作表中复制数据并放入另一个工作表中。我可以毫无问题地做到这一点。但是,当我想在另一行中使用相同的宏时,我遇到了问题。基本上我想要做的是从sheet1复制单元格D11并将其放在sheet2上的单元格B4中(我正在做的事情显然比这更复杂,但这并不重要)。

我的问题是,当我想现在运行此宏并从sheet1复制单元格D12并粘贴到sheet2上的B5时,粘贴的值跳转到B4。据我所知,这是因为VBcode说要粘贴复制的值。

我的问题是如何将其粘贴到我选择的任何行中?也许基于我选择的行/单元格。

当前代码,通过录制宏来编写

Sheets("sheet1").Select
Range("D11").Select
Selection.Copy
Sheets("sheet2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  :=False, Transpose:=False
Range("B4").Select

我假设最后一行是我需要进行更改的地方,但我不确定要改变什么。 谢谢!非常感谢任何和所有的帮助。

2 个答案:

答案 0 :(得分:1)

作为一般规则,请尽量避免选择复制粘贴(详细讨论在:"Application.Calculation = xlCalculationManual" statement causing run-time error 1004 in VBA Copy-Paste procedure中提供)。相反,请使用直接复制语句,这将解决您的问题并显着提高性能:

清单1.

Sub DirectCopySample()
    Application.ScreenUpdating = False
    Sheets("Sheet1").Range("D11").Copy Destination:=Sheets("Sheet2").Range("B5")
    Application.ScreenUpdating = True
End Sub

清单1中的Sub执行从Cell:Sheets("Sheet1").Range("D11")到单元格Sheets("Sheet2").Range("B5")的直接复制。

此外,您的初始Copy-Paste Sub可以简化(它也可以使它工作,但首选清单1)

清单2.

Sub CopyPasteSample()
    Sheets("sheet1").Range("D11").Copy
    Sheets("sheet2").Range("B5").PasteSpecial Paste:=xlPasteValues
End Sub

希望这会有所帮助。最好的问候,

答案 1 :(得分:0)

您似乎录制了一个宏并正在尝试重放它。这是一个真正的VBA代码(不是宏录制类型):

Sheets("sheet2").Range("B5") = Sheets("sheet1").Range("D11").Value

这就是全部!

BTW,您的困境来自于 PasteSpecial 方法复制到当前选定的单元格中。您已尝试多次运行此宏和范围(“B4”)。选择行就可以了。如果你坚持你的方法,插入范围(“B5”)。在 PasteSpecial 之前选择