在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行?此代码以前工作正常,它在我的工作簿的旧备份版本中工作正常。有谁知道为什么这是奇怪的行为?
感谢。
答案 0 :(得分:0)
JNevill,谢谢回应。有了更多的持久性,我解决了这个问题。设置了一个过滤器,并在设置过滤器时调用AListObject.DataBodyRange.Delete导致问题。解决方法是在调用delete方法之前删除所有过滤器,如下所示:
AListobject.AutoFilter.ShowAllData
AListObjct.DataBodyRange.Delete
再次感谢您的回复,如果我有机会再次发帖,我会按照您的建议发布实际代码。