Excel VBA代码返回一个运行时错误;这赢得了';因为它会移动工作表上表格中的单元格,所以不起作用;

Excel VBA代码返回一个运行时错误;这赢得了';因为它会移动工作表上表格中的单元格,所以不起作用;,excel,vba,Excel,Vba,我正在编写一些VBA代码。我正在尝试复制行并将其插入所选行的下方。不幸的是,它一直在提示: 运行时错误1004:这不起作用,因为它会移动工作表中的单元格 代码: 我可以尝试解决什么问题?Ret.Insert Shift:=xlDown应该是Ret.EntireRow.Insert Shift:=xlDown。您正在复制行,但未插入行。您也可以按如下所示使用梅花 If Not Ret Is Nothing Then With Ret.EntireRow .Copy

我正在编写一些VBA代码。我正在尝试复制行并将其插入所选行的下方。不幸的是,它一直在提示:

运行时错误1004:这不起作用,因为它会移动工作表中的单元格

代码:


我可以尝试解决什么问题?

Ret.Insert Shift:=xlDown
应该是
Ret.EntireRow.Insert Shift:=xlDown
。您正在复制行,但未插入行。您也可以按如下所示使用梅花

If Not Ret Is Nothing Then
    With Ret.EntireRow
        .Copy
        DoEvents '<~~ Give excel time (If reqd by Excel) to copy and place it in clipboard
        .Insert Shift:=xlDown
    End With
End If
在行动中


嗨,西德哈特,谢谢你的建议。不幸的是,在应用代码之后,问题仍然存在。问题在于。插入移位:=xlDown。VBA似乎不允许excel添加行。另外,这是一张受保护的纸。我不确定这是否重要。我已经用截图和新代码更新了我的帖子。您可能需要刷新页面才能看到它。我理解问题所在。请稍等,编辑我的答案
If Not Ret Is Nothing Then
    With Ret.EntireRow
        .Copy
        DoEvents '<~~ Give excel time (If reqd by Excel) to copy and place it in clipboard
        .Insert Shift:=xlDown
    End With
End If
If Not Ret Is Nothing Then
    Ret.Offset(1).Insert
    Ret.EntireRow.Copy Ret.Offset(1)
End If