ListObject表行计数

时间:2015-04-29 08:19:18

标签: excel excel-vba vba

我有一个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

在该操作之后,该表看起来像我描述的那样。如果没有它并修改表格看起来像我描述它的工作表。但为什么会导致这个问题?

2 个答案:

答案 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