我正在尝试使用以下代码向表中添加行。我需要动态的行数,因为我要将一个表中的行添加到主表中,并且补充表中的行数可能会有所不同。
当前,单元格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
函数使用变量吗?
答案 0 :(得分:0)
尝试一下:
ActiveCell.EntireRow.Resize(CInt(RowNumber.Value)).Insert Shift:=xlDown
我能够在自己的电子表格中重现您的错误。当F2包含公式=ROWS(Table1)
时,Range(“ F2”)。Value返回一个字符串值。转换为我修复了该问题。
修订后的答案
以下代码会将F2中指定的行数追加到A8所在的表中:
Dim insertIndex As Integer
Dim insertPosition As Integer
With Range("A8")
insertPosition = .Row - .ListObject.Range.Row
With .ListObject.ListRows
For insertIndex = 1 To CInt(Range("F2").Value)
.Add
Next
End With
End With
即使在A8所在的表的正下方有一个表,该方法也能正常工作。