添加表行时出现运行时错误1004

时间:2018-09-05 20:39:40

标签: excel-vba

我正在尝试使用以下代码向表中添加行。我需要动态的行数,因为我要将一个表中的行添加到主表中,并且补充表中的行数可能会有所不同。

当前,单元格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函数使用变量吗?

1 个答案:

答案 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所在的表的正下方有一个表,该方法也能正常工作。