我有一个excel表,其中有一个标题行和一个数据体行。我想数数数据体行。当我试图检查我的表有多少行时
Set myWorkSheet= ActiveWorkbook.Worksheets("Sheet1")
Set myTable= myWorkSheet.ListObjects("Table1")
countrows = myTable.ListRows.Countcountrows包含0。如果有2行或更多行,则给出正确的行号。为什么它对一行表示0,这是计算行的最佳方法还是有更好的方法?
编辑:
找出是什么导致了这个问题。在再次填充表之前,我使用这一行来清除它:
If tblChart.ListRows.Count >= 1 Then
myTable.DataBodyRange.Delete
End If在那次手术之后,表看起来就像我描述的那样。没有它,并修改表,使之看起来像我描述的表,它工作了。但为何会造成这个问题呢?
发布于 2015-04-29 08:33:01
您要寻找的ListObject属性是.DataBodyRange。
Dim myWorkSheet As Worksheet, myTable As ListObject, countRows As Long
Set myWorkSheet = ActiveWorkbook.Worksheets("Sheet1")
Set myTable = myWorkSheet.ListObjects("Table1")
countRows = myTable.DataBodyRange.Rows.Count
Debug.Print countRowsListObject属性的全面列表可在:ListObject接口上获得。
发布于 2017-09-06 19:34:08
谷歌搜索给用户带来的后发优势是:我也发现了这个问题。除非有两行数据,否则不存在DataBodyRange对象。不只是两个空行,而是至少一个列中的两行数据。我发现可靠的方法是测试DataBodyRange是否存在:
If Not TableListObject.DataBodyRange is Nothing Then
Debug.Print "Data Rows Count=", TableListObject.DataBodyRange.Rows.Count
Else
Debug.Print "No Data in Table detected"
End if
https://stackoverflow.com/questions/29938071
复制相似问题