我以两种不同的方式尝试了这种方法。Excel VBA在列中反复地复制并粘贴一系列单元格
首先,选择要复制的单元格范围,然后选择要粘贴的目标范围。以下是代码:
Sub PanelData()
Dim size As Integer
Dim i As Integer
Dim shrate As Worksheet
Dim shpanel As Worksheet
Set shrate = Sheets("Rate")
Set shpanel = Sheets("Panel")
size = shrate.Range("B4").End(xlDown).Row
shrate.Range(Cells(4, 2), Cells(size, 2)).Select
Selection.Copy
shpanel.Cells(1, 1).Value = size - 3
For i = 1 To 18
shpanel.Range(Cells(4, 1).Offset((i - 1) * (size - 3), 0), Cells(3, 1).Offset(i * (size - 3), 0)).Select
Selection.PasteSpecial Paste:=xlPasteValues
Selection.NumberFormat = "m/d/yyyy"
Next i
End Sub
其次,复制范围内的单元格,然后逐个粘贴到目标列。这里是代码:
Sub LoopingCP()
Dim size As Integer
Dim shrate As Worksheet
Dim shpanel As Worksheet
Set shrate = Sheets(2)
Set shpanel = Sheets(4)
size = shrate.Cells(4, 2).End(xlDown).Row - 3
For x = 1 To 18
For i = 1 To size
shrate.Cells(i + 3, 2).Select
Selection.Copy
shpanel.Cells(x * (i + 3), 1).Select
Selection.PasteSpecial Paste:=xlPasteValues
Selection.NumberFormat = "m/d/yyyy"
Next i
Next x
End Sub
这些尝试都没有解决。我做错了什么?
谢谢
他们怎么没有工作?你是否通过VBA得到错误?如果是这样,哪一行发生什么错误?它是否运行,但不按预期复制/粘贴?最后,请参阅[如何避免使用'.Select'](https://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros),因为它可能会导致时髦的事情发生,如果你不小心。 – BruceWayne