2016-02-24 82 views
0

在Excel中有一些VBA代碼時,向空listobject添加一行時出現了一個奇怪的問題。有誰知道發生了什麼或如何解決?這裏的問題是:將listrow添加到空listobject

首先,我刪除的ListObject(表)的內容,使用:

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行?此代碼以前工作正常,並且它在我的工作簿的舊備份版本中正常工作。有誰知道爲什麼這是奇怪的行爲發生?

謝謝。

+3

請改爲顯示完整的代碼。 – findwindow

回答

0

JNevill,感謝您的回覆。有了更多的堅持,我解決了這個問題。設置了篩選器,並在設置篩選器時調用AListObject.DataBodyRange.Delete導致問題。解決的辦法是刪除之前調用刪除方法的所有過濾器,如下所示:再次

感謝

AListobject.AutoFilter.ShowAllData

AListObjct.DataBodyRange.Delete的響應,如果我有一個機會要再次發佈,我會按照您的建議發佈實際代碼。