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

Posted

技术标签:

【中文标题】将行添加到多个工作表时清除错误【英文标题】:Clearing an error when adding Rows to multiple Sheets 【发布时间】:2013-11-14 22:24:41 【问题描述】:

问题:我想设置一个按钮,允许用户在他们正在处理的活动工作表中添加一行。在后台,我希望电子表格在与添加的工作簿相同的位置的同一工作簿的另一张工作表中添加一行。 (这两张表仅与具有上个月信息的非活动工作表相同)我需要这样做的原因是因为活动工作表正在从非活动工作表中提取数据,并且我想保持相同的行数两张表的数据都在同一行中,因此它将提取正确的数据。

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

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

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

对我在MS Excel VBA how to insert a row in the current worksheet and three others使用的代码有了想法

我的代码

Sub AddRow()
'
' Row Macro


    ActiveWorkbook.Names.Add Name:="CopyRow", RefersToR1C1:=Rows(ActiveCell.Row)
    
    Range("CopyRow").Select
    
    Selection.Copy
    
    Dim Lst As Long

    Lst = ActiveCell.Row

    Worksheets("SOV Detailed Breakdown").Rows(Lst).Insert
    Worksheets("Previous Application").Rows(Lst).Insert
 
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False


    ActiveWorkbook.Names("CopyRow").Delete

End Sub

【问题讨论】:

这可以做我想做的一切,但有错误。有什么想法吗? 【参考方案1】:

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

【讨论】:

我按照上面的方法尝试了您的代码,它给了我一个全局失败错误(不喜欢“Range(ActiveCell.Row).Copy”行,但我尝试了您的建议并删除了 PasteSpecial 并且这样做了把戏。 糟糕,试试Rows(ActiveCell.Row).Copy 而不是Range...

以上是关于将行添加到多个工作表时清除错误的主要内容,如果未能解决你的问题,请参考以下文章

将行添加到 Access 表时生成一个序号(每组)

将新行添加到另一个工作表时,保持函数引用不变?

添加工作表时更新 sheet.count 值

尝试使用触发器以将行插入另一个表时出现语法错误

将新工作表添加到XLSM宏Excel文件时出错

将行移动到另一个工作表,其中单元格等于工作表名称