此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
答案 0 :(得分: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
不是使用剪贴板复制和粘贴值,而是直接将下一行中单元格的值设置为它们上面的值,然后将选择移动到下一个单元格。
这样可以避免任何复制/粘贴错误,如果失败,可以对此代码进行故障排除。