在VBA excel中多次将一个范围复制并粘贴到另一个范围的代码

在VBA excel中多次将一个范围复制并粘贴到另一个范围的代码,excel,vba,Excel,Vba,我编写了以下代码,将范围w21:W1759复制并粘贴到范围AD21中: Sub CommandButton1_Click() Dim i As Integer, j As Integer For j = 1 To Range("d7") Range("d8") = j 'Calculate Range("w21:W1759").Select Selection.Copy Range("AD21").

我编写了以下代码,将范围w21:W1759复制并粘贴到范围AD21中:

Sub CommandButton1_Click()

    Dim i As Integer, j As Integer
    For j = 1 To Range("d7")
     Range("d8") = j

     'Calculate
        Range("w21:W1759").Select
        Selection.Copy
             Range("AD21").Select
        Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=False
      Next j
End Sub
我在w21:W1759范围内的数据在每次单击时设置为更改(由于随机采样),我希望复制此范围内的新数据并粘贴到范围“ae”(相邻列)中。然后在下一次点击“af”等等。我需要向上面添加什么代码来实现这一点


非常感谢您的帮助

这在某种程度上取决于AC列右侧的内容。如果Ad列是第一个空列,则很容易复制到。后续复制操作可以使用相同的下一个空列方法来填充列AE、AF等

Sub CommandButton1_Click()
    Dim i As Long, j As Long

    With Worksheets("Sheet1")
        For j = 1 To .Range("d7")
            .Range("d8") = j
            .Calculate
            With .Range("w21:w1759")
                .Parent.Cells(21, Columns.Count).End(xlToLeft).Offset(0, 1).Resize(.Rows.Count, .Columns.Count) = .Value
            End With
        Next j
    End With

End Sub

我已经将你的复制、粘贴和特殊值方法更改为直接值转移。这会更快,并且不涉及剪贴板。

Hi Jeeped。非常感谢您修改代码。但是,当我在d7范围内键入(例如2或3)时,w21:w1759中的值仍会移动到AD列(每次覆盖),而不是移动到AE、AF等。有什么想法吗?我不知道这是怎么发生的。我确实错过了对
.Parent
对象的调用,我已在上面更正了该对象,但这不会对您所描述的内容产生任何影响。嗨,Jeeped,我使用了您的新代码,但没有乐趣。当我点击我的控制按钮运行3、4、5或50(d7)随机重新采样以在W21:w1759中获得新结果时,该范围的结果始终复制并粘贴到同一列AD,而不是每次移动一列?还有什么想法吗???再看看代码。W21中有值吗?如果没有,那么就没有什么可以放在int AD21上,也没有什么可以找到的,当从右边看去重新安置的时候。我仔细检查了一下,w21中肯定有一个值,它可以很好地复制到AD21。问题是,每次w21:w1759中的值复制时,它们都会一直复制到ad列。也许我可以把我的电子表格发给你,因为我可能没有正确地解释我自己?