Dav*_*ard 14 excel vba excel-2007 excel-vba
就在最近,我一直试图删除表中的所有数据行,除了第一行(需要清除)
正在执行的某些表可能已经没有行,所以我将其运行到问题,因为.DataBodyRange.Rows.Count在没有行的表上使用(只是页眉和/或页脚)会导致错误.
我全神贯注地寻找一个找不到整个解决方案的解决方案,所以我希望我对这个问题的回答将来对其他人有用.
小智 21
这是我清除数据的方式:
Sub Macro3()
With Sheet1.ListObjects("Table1")
If Not .DataBodyRange Is Nothing Then
.DataBodyRange.Delete
End If
End With
End Sub
Run Code Online (Sandbox Code Playgroud)
Sid*_*out 19
您的代码可以缩小到
Sub DeleteTableRows(ByRef Table As ListObject)
On Error Resume Next
'~~> Clear Header Row `IF` it exists
Table.DataBodyRange.Rows(1).ClearContents
'~~> Delete all the other rows `IF `they exist
Table.DataBodyRange.Offset(1, 0).Resize(Table.DataBodyRange.Rows.Count - 1, _
Table.DataBodyRange.Columns.Count).Rows.Delete
On Error GoTo 0
End Sub
Run Code Online (Sandbox Code Playgroud)
编辑:
另外,如果我需要告知用户第一行或其他行是否被删除,我会添加正确的错误处理
小智 9
我有 3 个可以正常工作的例程,只需在表中选择一个单元格并运行其中一个子例程
Sub ClearTable()
If Not ActiveCell.ListObject Is Nothing Then
ActiveCell.ListObject.DataBodyRange.Rows.ClearContents
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
和收缩表以删除除标题和第一个数据行之外的数据体范围
Sub ShrinkTable()
If Not ActiveCell.ListObject Is Nothing Then
ActiveCell.ListObject.DataBodyRange.Delete
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
和删除表格以从工作表中完全删除表格
Sub DeleteTable()
If Not ActiveCell.ListObject Is Nothing Then
ActiveCell.ListObject.Delete
End If
End Sub
Run Code Online (Sandbox Code Playgroud)