【问题标题】:Cut and Paste Loop with VBA in Excel Error 1004在 Excel 错误 1004 中使用 VBA 剪切和粘贴循环
【发布时间】:2014-03-18 14:02:16
【问题描述】:

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

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。

谁能帮帮我?

【问题讨论】:

  • 使用Sheets("Calc").Range(Cells(i, 130), Cells(i + 4, 130)).Cut Sheets("Calc").Cells(i + 5, 1)。顺便说一句,为什么不选择所有组,但最后一个,剪切它们并粘贴到第二组的请?
  • @simoco 很抱歉,如果我遗漏了什么,但我不太明白你的代码。我在第二行代码中得到错误,你没有改变all.. 另一方面,关于组的事情 - 是的,你是对的 =)
  • 好的,删除你的两行:1)Sheets("Calc").Range(Cells(i, 130), Cells(i + 4, 130)).Cut 和 2)Sheets("Calc").Range(Cells(i + 5, 1)).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 并用单行替换它们:Sheets("Calc").Range(Cells(i, 130), Cells(i + 4, 130)).Cut Destination:=Sheets("Calc").Cells(i + 5, 1)

标签: vba excel


【解决方案1】:

改用这个:

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

但是,正如我所见,您可以不使用循环:

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)(据我了解您的问题,您想将单元格向下移动,但不能跨越)

【讨论】:

  • 感谢您的帮助,效果很好。我想我没有想到第二个选项,因为我对 VBA 还比较陌生,一些“使用 excel 正常工作”的心态仍然坚持我。 :)
【解决方案2】:

您不能将PasteSpecialCut 一起使用

您可以复制和粘贴为值

你可以剪切和粘贴

【讨论】:

    猜你喜欢
    • 2020-06-16
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    相关资源
    最近更新 更多