Vba 用于在excel工作表之间复制某些单元格的宏

Vba 用于在excel工作表之间复制某些单元格的宏,vba,excel,Vba,Excel,我想制作一个宏,它将用户在一个工作表中标记的某些单元格值复制到另一个工作表中,但复制到不同的单元格中 在一个工作表中,我们有A1到D1单元格中的数据,我的目标是将它们粘贴到第二个工作表中,但在我的例子中,粘贴到另一个单元格A2、A4、A6、A8中 而且,当有人复制了四个以上的单元格时,它也会将它们粘贴到B2、B4、B6、B8等的旁边 我做过类似的事情,但不起作用 Sub sbCopyRangeToAnotherSheet() 'Copy the data Sheets("Arkusz2").Ra

我想制作一个宏,它将用户在一个工作表中标记的某些单元格值复制到另一个工作表中,但复制到不同的单元格中

在一个工作表中,我们有A1到D1单元格中的数据,我的目标是将它们粘贴到第二个工作表中,但在我的例子中,粘贴到另一个单元格A2、A4、A6、A8中

而且,当有人复制了四个以上的单元格时,它也会将它们粘贴到B2、B4、B6、B8等的旁边

我做过类似的事情,但不起作用

Sub sbCopyRangeToAnotherSheet()
'Copy the data
Sheets("Arkusz2").Range("A2:D2").Copy
Sheets("Arkusz1").Activate
'Select the target range
Range("A2", "A5", "A8", "A11").Select
'Paste in the target destination
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub
正确的语法是

Sub sbCopyRangeToAnotherSheet()
    Sheets("Arkusz2").Range("A2:D2").Copy
    Sheets("Arkusz1").Range("A2,A5,A8,A11").PasteSpecial
    Application.CutCopyMode = False
End Sub
或者,您甚至可以在一行中完成:

Sub sbCopyRangeToAnotherSheet()
    Sheets("Arkusz2").Range("A2:D2").Copy Sheets("Arkusz1").Range("A2,A5,A8,A11")
End Sub

我建议您阅读:。

它不允许您将连续范围粘贴到非连续范围,因此您需要创建一个通过复制/粘贴的循环individually@CFO不,你不需要一个循环。看看我的答案。@Matt请注意你的问题:它不起作用是对错误最糟糕的描述。如果你在这里问问题,请告诉我你在哪一行遇到了什么错误。也要描述发生了什么而不是你期望发生什么的行为。然后你就有了一个好问题,这个问题不会被否决,而且给出一个好答案要容易得多。这个代码什么都不做,没有错误,没有任何符号,如果有用的话,我会用一个按钮来使用它。@Matt抱歉,请看我的编辑。将其更改为PasteSpecial。请注意,这是在后台复制的。它不会切换活动工作表。嗯,好的,但它不会粘贴值,即使我切换到目标工作表。你确定你运行了代码吗?这次我对它进行了测试,它必须按预期工作。将光标放在sub中,按F5键运行它,或按F8键一步一步地浏览它。当我使用F8键时,它工作正常,但不符合预期。我的目标是将值从A2复制到A2,从B2复制到A4,从C2复制到A6,从D2复制到A8。现在它将值从A2复制到A2,B2,C2,D2,从B2复制到A4,B4,C4,D4。你知道我的意思吗?