将listrow添加到空listobject

时间:2016-02-24 20:59:24

标签: excel vba excel-vba

在Excel中使用一些VBA代码时,在向空列表对象添加行时会出现奇怪的问题。有谁知道发生了什么或如何解决它?这是问题所在:

首先,我使用:

删除listobject(table)的内容
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(table)的第1行显示空单元格。

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

为什么在listobject为空时调用的第一个Add方法会创建两行,为什么我不能写入第1行?此代码以前工作正常,它在我的工作簿的旧备份版本中工作正常。有谁知道为什么这是奇怪的行为?

感谢。

1 个答案:

答案 0 :(得分:0)

JNevill,谢谢回应。有了更多的持久性,我解决了这个问题。设置了一个过滤器,并在设置过滤器时调用AListObject.DataBodyRange.Delete导致问题。解决方法是在调用delete方法之前删除所有过滤器,如下所示:

AListobject.AutoFilter.ShowAllData

AListObjct.DataBodyRange.Delete

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