【发布时间】:2020-07-03 15:32:26
【问题描述】:
我正在尝试使用以下代码向表中添加行。我需要动态的行数,因为我正在将一个表中的行添加到我的主表中,并且补充表中的行数可能会有所不同。
目前,单元格 F2 计算补充表中的行数,这应该是宏添加到我的主表中的行数。但是,当引用 RowNumber 变量时,我收到错误消息“范围类的插入方法失败”。
我尝试用不同的数字替换变量,然后代码运行正常。但是,每当我使用该变量时,都会收到错误消息。
感谢任何帮助。
Sub AddRows()
Dim ws As Worksheet
Dim RowNumber As Range
Set ws = ThisWorkbook.ActiveSheet
With ws
Set RowNumber = .Range("F2")
Range("A8").End(xlDown).Select
ActiveCell.EntireRow.Resize(RowNumber.Value).Insert Shift:=xlDown
End With
Range("tblDetail").Select
Range("A10").Activate
Selection.FillDown
End Sub
编辑:我想我收到了错误,因为我有一个表格,它在我的主表格下方开始三行(这是在线会计软件的导入文件,需要一定数量的表格)。我玩弄了 F2 中的值:F2 中任何大于“4”的值都会导致 1004 错误(假设运行宏时的活动单元格位于我的主表的最后一行)。小于 4,代码运行良好。
由于我的主表是一个列表对象,有没有办法在 listrows.add 函数中使用变量?
【问题讨论】:
-
您确定运行此代码时的
ActiveSheet是您认为的那个吗?在引发错误的那一行之前,添加Debug.Print ws.name, RowNumber.Value再次运行它,然后查看 VBE 的即时输出窗口中显示的内容:查看>>“即时窗口”(如果尚未显示)。 -
是的,我使用添加的调试指令再次运行代码,立即窗口显示正确的值(名称为“Sheet1”,值为“199”)。
-
而且,为了确认一下,如果您对代码没有任何其他更改,但将
RowNumber.Value替换为199是否有效? -
我今天尝试用
199替换RowNumber.Value,但运行代码时仍然收到1004 错误。所以我只用创建了一个新宏 -
我认为你的评论的结尾被切断了。不过,这是个有趣的消息。假设这仍然是一个问题,您手动尝试在该工作表上从该行开始插入 199 行会发生什么?