在Excel错误1004中使用VBA剪切和粘贴循环

时间:2014-03-18 14:02:17

标签: excel vba excel-vba

对于我当前的项目,我正在尝试将工作表中的一组单元格向下移动到一定数量的行。我认为最简单的方法是切割第二组到最后一组并将其粘贴到最后一组,然后将第三组切割到最后一组并将其粘贴到第二组到最后一组的位置,依此类推(从那时起)我不希望成为使用以下代码扩展的列表:

For i = 298 To 8 Step -5
Sheets("Calc").Range(Cells(i, 130), Cells(i + 4, 130)).Cut
Sheets("Calc").Range(Cells(i + 5, 1)).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Next i

但是,我总是在第二行代码上得到运行时错误1004。

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

改为使用这个:

With Sheets("Calc")
   For i = 298 To 8 Step -5
       .Range(.Cells(i, 130), .Cells(i + 4, 130)).Cut Destination:=.Cells(i + 5, 130)
   Next i
End With

Howerver,正如我所见,你可以不用循环来做到这一点:

With Sheets("Calc")
    .Range(.Cells(8, 130), .Cells(302, 130)).Cut Destination:=.Cells(13, 130)
End With

顺便说一句,我已将您的目的地范围从Sheets("Calc").Cells(i + 5, 1)更改为Sheets("Calc").Cells(i + 5, 130)(据我了解您的问题,您希望将细胞向下移动,但不能跨越)

答案 1 :(得分:1)

您无法将PasteSpecialCut

一起使用

您可以复制并粘贴为值

OR

您可以剪切和粘贴