使用Cut和PasteSpecial时的运行时错误1004

时间:2017-06-17 19:33:29

标签: excel vba excel-vba

我必须将活动单元格中的内容切割到表单1中的特定范围,然后将其粘贴到工作表2中该范围的活动单元格中。切割特定范围的内容工作正常,但在粘贴选项中,我是将运行时错误1004作为应用程序定义或对象定义错误。

以下是我正在使用的代码:

Sub sheet1_sheet2_copy_click()
  Sheets("sheet1").Activate
  ActiveCell.Resize(1, 26).Cut
  Sheets("sheet2").Activate
  ActiveCell.Resize(1, 26).PasteSpecial
End Sub

3 个答案:

答案 0 :(得分:1)

您的问题有点不清楚,但您可以尝试这样做:

Sub sheet1_sheet2_copy_click()

Sheets("sheet1").Cells(1, 26).Cut
Sheets("sheet2").Cells(1, 26).PasteSpecial Paste:=xlPasteValues

End Sub

更好的是,你可以这样做:

Sub sheet1_sheet2_copy_click()
    Sheets("sheet2").Cells(1, 26).value = Sheets("sheet1").Cells(1, 26).Value
End Sub

一般情况下,最好不要使用.Activate.Select,而是明确定义您所展示的参考文献。将Paste:=修改为您尝试用于PasteSpecial的任何参数。

有关此命令的更多信息,请参阅https://msdn.microsoft.com/VBA/Excel-VBA/articles/range-pastespecial-method-excel

答案 1 :(得分:0)

就我个人而言,我认为使用活动单元作为源和目标是相当不可靠的,但如果将粘贴行更改为activesheet.paste,它应该可以正常工作。

答案 2 :(得分:0)

我已经测试了你的代码,看起来像PasteSpecial仅在你使用Copy而不是Cut时才有效,所以你应该这样修改你的代码:

Sheets("sheet1").Activate
ActiveCell.Resize(1, 26).Copy
Sheets("sheet2").Activate
ActiveCell.Resize(1, 26).PasteSpecial

如果您需要从sheet1中删除数据,请在PasteSpecial之后执行此操作。