我有一个excel表,其中包含一个标题行和一个数据正文行。我想计算数据体行。当我试图检查我的表有多少行
Set myWorkSheet= ActiveWorkbook.Worksheets("Sheet1")
Set myTable= myWorkSheet.ListObjects("Table1")
countrows = myTable.ListRows.Count
countrows
包含0
。如果有2行或更多行,则会给出正确的行号。为什么它说一行为0并且它是计算行数的最佳方式还是有更好的行?
修改
发现导致问题的原因。在我再次填充之前,我使用这一行清除表格:
If tblChart.ListRows.Count >= 1 Then
myTable.DataBodyRange.Delete
End If
在该操作之后,该表看起来像我描述的那样。如果没有它并修改表格看起来像我描述它的工作表。但为什么会导致这个问题?
答案 0 :(得分:2)
您要查找的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 countRows
可在以下位置找到ListObject属性的完整列表:ListObject Interface。
答案 1 :(得分:2)
响应迟到的案例Google搜索带来了用户: 我也发现了这个问题。除非有两行数据,否则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