【问题标题】:Run-time Error 1004 while adding table rows添加表行时出现运行时错误 1004
【发布时间】: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 行会发生什么?

标签: excel vba


【解决方案1】:

试试这个:

ActiveCell.EntireRow.Resize(CInt(RowNumber.Value)).Insert Shift:=xlDown

我能够在我自己的电子表格中重现您的错误。 Range("F2").Value 在 F2 包含公式 =ROWS(Table1) 时返回一个字符串值。转换为我修复了它。

修改后的答案

以下代码会将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 所在的表的正下方有一个表也是如此。

【讨论】:

  • 最初 F2 包含一个与 =ROWS(Table1) 执行相同操作的 Counta 函数,但我将其更改为 =ROWS(Table1) 函数。然后我对宏代码进行了建议的更改,但仍然收到相同的 1004 错误。请参阅我对 OP 的编辑,了解我认为的问题所在。
  • A8有什么意义?您是否尝试始终在第 8 行插入?或者,您是否总是试图在表格末尾插入?因为我想我有一个答案给你,但我需要知道你希望通过这行来完成什么:Range("A8").End(xlDown).Select
  • 请参阅我的答案的修订部分。我认为这可能是你想要做的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多