我必须将活动单元格中的内容切割到表单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
答案 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之后执行此操作。