【问题标题】:Excel VBA ListRows.Add adding data into cells, but not adding row to tableExcel VBA ListRows.Add 将数据添加到单元格中,但不将行添加到表中
【发布时间】:2020-05-11 09:59:10
【问题描述】:

我有一个非常简单的 VBA,它可以在 Excel 表格中添加一行 - 前四列包含 VBA 输入的数据,最后四列自动从上面的行复制公式,这通常在添加行时发生到一张桌子。我不认为我的代码有什么问题,但无论如何都可以参考:

Sub addAccountEmail()
    Dim ws1    As Worksheet, ws2 As Worksheet
    Set ws1 = ThisWorkbook.Sheets("trade")
    Set ws2 = ThisWorkbook.Sheets("Database")

    Dim tbl    As ListObject
    Set tbl = ws2.ListObjects("accountActivity")

    With tbl.ListRows.Add
        .Range(1) = Application.UserName
        .Range(2) = Date
        .Range(3) = Time
        .Range(4) = "Email"
    End With
End Sub

我遇到的问题是,在运行 VBA 时,有时会添加数据,但就像普通的 Excel 范围一样,而不是添加表格行。这些公式也通过了,但显示为#VALUE!,好像有人向上拖动了表格的范围以排除该行。下面的截图来演示:

我确定这不是我的代码,因为我之前多次使用相同的方法没有问题。这是一个保存在 SharePoint 中的文件,有多个用户同时使用它 - 这可能是问题所在吗?

编辑:公式依次为=IF(WEEKNUM([@Date])=WEEKNUM(TODAY()),1,"")=IF(WEEKNUM([@Date])=WEEKNUM(TODAY())-1,1,"")=IF(EOMONTH([@Date],0)=EOMONTH(TODAY(),0),1,"")=IF(AND([@Date]>=spec!$D$5,[@Date]<=spec!$D$6),1,"")。我相信当公式在表格之外时返回错误的原因是因为它引用表格列,即[@Date]

【问题讨论】:

  • 公式是什么?
  • 我已将公式添加到问题中。

标签: excel vba


【解决方案1】:

您的代码非常适合我(Excel 2013)。但是,我发现您对Range(1) 等的枚举相当奇怪。也许您的 Excel 版本也这么认为。请尝试这种更传统的语法。

Sub addAccountEmail()

    Dim ws1    As Worksheet, ws2 As Worksheet
    Set ws1 = ThisWorkbook.Sheets("Trade")
    Set ws2 = ThisWorkbook.Sheets("Database")

    Dim tbl    As ListObject
    Set tbl = ws2.ListObjects("accountActivity")

    Dim tblRow As Range
    Set tblRow = tbl.ListRows.Add.Range
    With tblRow
        .Cells(1) = Application.UserName
        .Cells(2) = Date
        .Cells(3) = Time
        .Cells(4) = "Email"
    End With
End Sub

顺便说一句,我在 Rubberduck 公开反对他们的想法,即在整个代码中传播 Dim 语句有助于使后者更具可读性。从来没听过这么多废话!系统假定每个变量只会被使用一次。这种情况很少见。在所有其他情况下,您可能必须查找声明,如果它不在代码的顶部,您将不得不到处搜索。

【讨论】:

  • 谢谢。我可以尝试一下,但我的代码通常也适用于我,如果 Range 是问题所在,那么它肯定每次都会中断吗?无论如何我都会做出改变,看看它是否排序。
【解决方案2】:

对我 (Excel 365) 来说,代码也可以工作(没有任何更改)。 如果你复制表格并相应地更改代码,是否存在同样的问题。

我的第一个想法是可能是计算选项,但公式结果应该是 0 而不是#value

【讨论】:

    猜你喜欢
    • 2023-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多