将行添加到多个表时清除错误

时间:2013-11-14 22:24:41

标签: excel vba

我之前已经问过这个,但似乎无法弄清楚如何获取我用来在评论中干净利落地显示的代码,以便人们可以阅读它。所以转发到这里。

问题:我想设置一个按钮,允许用户在他们正在处理的活动工作表上添加一行。在后台,我希望电子表格在同一工作簿中的另一个工作表中添加一行,与添加的工作簿位于同一位置。 (两张纸只与上一个月有非活动工作表相同)我之所以需要这样做是因为Active工作表从非活动工作表中提取数据而我希望保持相同的行数两个工作表都有相同行中的数据,因此它将提取正确的数据。 感谢您的任何建议!

我添加了从选择行复制公式,因此用户不需要手动复制,我认为这是造成问题的原因。

关于如何清除错误的任何想法:

运行时错误'1004': Range类的PasteSpecial方法失败

了解我在MS Excel VBA how to insert a row in the current worksheet and three others

使用的代码

我的代码

Sub AddRow() “ '行宏

ActiveWorkbook.Names.Add Name:="CopyRow", RefersToR1C1:=Rows(ActiveCell.Row)

Range("CopyRow").Select

Selection.Copy

Dim Lst As Long

Lst = ActiveCell.Row

工作表(“SOV详细分解”)。行(Lst)。插入 工作表(“上一个应用程序”)。行(Lst)。插入

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


ActiveWorkbook.Names("CopyRow").Delete

End Sub

1 个答案:

答案 0 :(得分:0)

错误会引发PasteSpecial方法,这是不必要的。当剪贴板像这样填充时,下一个Insert语句会自动执行粘贴操作。

我整理它以摆脱我认为你真的不需要的Name分配。

Sub AddRow() ' ' Row Macro
Dim Lst As Long

Rows(ActiveCell.Row).Copy

Lst = ActiveCell.Row

Worksheets("SOV Detailed Breakdown").Rows(Lst).Insert 
Worksheets("Previous Application").Rows(Lst).Insert

End Sub