我希望通過VBA來重置一個表(listObject)。
想法1:清除表的內容并將表的大小調整到一列
With ActiveWorkbook.Worksheets("Sheet1"/span>).ListObjects("tblExample"/span>)
If Not .DataBodyRange Is Nothing Then .DataBodyRange.ClearContents
Dim numColumns As Long: numColumns = .ListColumns.Count
如果 numColumns > 1 然后
.DataBodyRange.Offset(1).Resize(, .Columns.Count - 1).Delete 'Last statement.
結束 If
結束 與
問題是:當評估最后一條陳述句時,我得到了運行時的'438'錯誤,說明類似的問題。'Object does not support this Property or Method.
想法2:洗掉該表并創建一個新的表
。With ActiveWorkbook.Worksheets("Sheet1"/span>)
If .ListObjects.Count = 1Then
.ListObjects(1).洗掉
.ListObjects.Add(Destination:=.Range("I1:I105")).Name = "tblExample"
End If
End With
問題:新的表格被放置在一個隨機的位置(=選定的單元格)。
uj5u.com熱心網友回復:
With ActiveWorkbook.Worksheets("Sheet1"/span>).ListObjects("tblExample"/span>)
.Resize .Range.Resize(ColumnSize:=1) ' 調整整個表格的大小,只保留第一列。
結束 與
ListObjects("tblExample").Resize期望得到表格的新范圍。
ListObjects("tblExample").Range給出了表的舊范圍,.Resize(ColumnSize:=1)將舊范圍調整到只有一列。
你確定你指的是
ActiveWorkbook嗎?
ActiveWorkbook處于頂部的作業簿(有焦點)。 可以是用戶在運行宏的時候點擊的任何作業簿。ThisWorkbookVBA代碼所寫的作業簿。 是一個定義的作業簿,永遠不會改變。
在大多數情況下,你應該避免使用ActiveWorkbook,因為它可以通過一個滑鼠點擊來改變,而使用ThisWorkbook。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/307528.html
標籤:
上一篇:型別錯誤。不能讀取未定義的屬性
