【问题标题】:add listrow to empty listobject将列表行添加到空列表对象
【发布时间】:2016-04-06 21:51:04
【问题描述】:

使用 Excel 中的一些 VBA 代码向空列表对象添加行时遇到一个奇怪的问题。有谁知道发生了什么或如何解决它?问题来了:

首先我删除列表对象(表)的内容,使用:

AListObject.DataBodyRange.Delete

然后我有一个循环,它迭代地添加一行并用数据填充它。我通过使用添加行:

AListObject.ListRows.Add

这是奇怪的行为。首先,代码删除listobject的数据:

AListObject.DataBodyRange.Delete

即时窗口显示AListObject.ListRows.Count 等于0,因此所有行都被删除。然后我添加一行:

 AListObject.ListRows.Add (first iteration)

立即窗口显示AListObject.ListRows.Count 等于2,因此Add 方法创建了两行,而不是一行。此外,写入第 1 行的数据丢失。 listobject(表格)的第 1 行显示空单元格。

对于循环的剩余迭代(2 到 n),ListRows.Add 方法工作正常,只创建一行。将数据写入这些行(2 到 n)也可以正常工作。

为什么当 listobject 为空时调用的第一个 Add 方法创建了两行,为什么我不能写入第 1 行?此代码以前运行良好,并且在我的工作簿的旧备份版本中运行良好。有谁知道为什么会出现这种奇怪的行为?

谢谢。

【问题讨论】:

  • 请显示完整的代码。

标签: vba excel


【解决方案1】:

JNevill,感谢您的回复。有了更多的坚持,我解决了这个问题。设置了过滤器,并在设置过滤器时调用 AListObject.DataBodyRange.Delete 导致问题。解决的办法是在调用delete方法之前把所有过滤器都去掉,如下:

AListobject.AutoFilter.ShowAllData

AListObjct.DataBodyRange.Delete

再次感谢您的回复,如果我有机会再次发布,我会听从您的建议并发布实际代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多