【问题标题】:excel 2010 returning: Run-time error '1004': "PasteSpecial method of Range class failedexcel 2010 返回:运行时错误“1004”:“Range 类的PasteSpecial 方法失败
【发布时间】:2017-01-13 22:43:44
【问题描述】:

此 VBA 代码已开始返回错误消息:“运行时错误'1004':“Range 类的PasteSpecial 方法失败”

我使用 VBA 代码将几个单元格复制并粘贴到下一行。我经常连续运行几次。第一次通过时它永远不会失败。它工作了好几年才开始失败。

Sub CopyInfoToLineBelowSamePO_Ctrl_Shft_Y()
'
' CopyInfoToLineBelowSamePO_Ctrl_Shft_Y Macro
'
' Keyboard Shortcut: Ctrl+Shift+Y
'
    Selection.Copy
    ActiveCell.Offset(1, 0).Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveCell.Offset(-1, 5).Range("A1").Select
    Application.CutCopyMode = False
    Selection.Copy
    ActiveCell.Offset(1, 0).Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveCell.Offset(0, -5).Range("A1").Select
End Sub

我认为故障发生在这一点上(第一次出现):

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

【问题讨论】:

  • 该错误消息基本上意味着剪贴板中没有任何内容,但我不知道为什么会发生这种情况。我试过你的代码,对我来说效果很好。
  • 你能解决你的问题吗?

标签: excel vba


【解决方案1】:

我不确定为什么您的代码在与以前使用的相同情况下使用时会开始失败。但是,我建议使用下面的代码来执行相同的操作:

Sub CopyInfoToLineBelowSamePO_Ctrl_Shft_Y()

ActiveCell.Offset(1, 0).Value2 = ActiveCell.Value2
ActiveCell.Offset(1, 5).Value2 = ActiveCell.Offset(0, 5).Value2
ActiveCell.Offset(1, 0).Select

End Sub

这不是使用剪贴板复制和粘贴值,而是直接将下一行中的单元格的值设置为它们上方的值,然后将选择移动到下一个单元格。

这将避免任何复制/粘贴错误,并且在此代码失败时排除故障是很简单的。

【讨论】:

  • @RayK22 很高兴为您提供帮助。如果这回答了您的问题,那么如果您不介意投票/接受它,那将不胜感激。有关 StackOverflow 的更多信息,请参见此处:stackoverflow.com/tour
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-17
  • 2017-12-14
相关资源
最近更新 更多