我試圖重置Excel ListObject中的列數。我知道你可以逐個添加和刪除列,但我想避免不必要的循環。我反而決定使用Resize方法調整ListObject的大小。當行計數== 1時,ListObject.Resize()使DataBodyRange爲空
這裏是我使用的代碼(其中OutputCasesTable是的ListObject):
OutputCasesTable.DataBodyRange.Value2 = "";
OutputCasesTable.Resize(OutputCasesTable.Range.Resize[ColumnSize: CaseCount]);
OutputCasesTable.DataBodyRange.Value2 = OutputCasesAray;
上面的代碼行看起來很好地工作,但是,如果所述的ListObject只包含1行的數據,所述DataBodyRange ListObject在第二行變爲空 - 當我嘗試更改其單元格的值時產生錯誤。 excel中的行仍然存在。
MSDN文檔說明如下: 「標頭必須保留在同一行中,並且結果列表必須與原始列表重疊。列表必須包含標題行和至少一行數據。
現在我明白「一行數據」意味着該行包含值 - 因此這裏的錯誤原因必須是DataBodyRange單元格都不包含任何值(「」)。但是,包含「」的兩個數據行的表仍然沒有包含數據的行,是嗎?
我知道有很多方法可以完成這個任務,但我想明白爲什麼會發生這種情況。
臨時解決方案: 將代碼替換爲只將值設置爲將刪除的列中的空字符串(新列數以上的列)。所有其他列將被取代:
if(OutputCasesTable.ListColumns.Count - CaseCount > 0)
OutputCasesTable.DataBodyRange.Offset[ColumnOffset: CaseCount].Resize[ColumnSize: OutputCasesTable.ListColumns.Count - CaseCount].Value2 = "";
OutputCasesTable.Resize(OutputCasesTable.Range.Resize[ColumnSize: CaseCount]);
OutputCasesTable.DataBodyRange.Value2 = OutputCasesAray;
我個人更喜歡看第一個解決方案!
有什麼我可以做,使它與空字符串工作?或者你有更好的解決方案?
最好的問候,