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