检查具有样式的格式表是否没有数据

时间:2017-04-02 05:37:04

标签: excel vba excel-vba

我有一个格式化的表,其样式名为“Goals”。我有一个计数器来检查表中有多少行。每次添加或删除行时,计数器都会更新。

Private Sub Worksheet_Change(ByVal Target As Range)

If Range("Goals").Rows(1) = Empty Then
    Worksheets("Counters").Cells(2, 1) = 0
Else
    Worksheets("Counters").Cells(2, 1) = Range("Goals").Rows.Count
End If

End Sub

如果填充了表并删除了所有行,这导致表中没有数据,则条件Range("Goals").Rows(1) = Empty将被计算为False,并且计数器无法正确更新。但是,如果表格有一行数据,并且手动删除了单元格(未删除表格的行),则counter会正确更新,我不知道原因。

我已经尝试将条件评估为Worksheets(GoalsList).Cells(2,1) = Empty,但它也不起作用。

请帮助,我不知道该怎么做!

1 个答案:

答案 0 :(得分:2)

如果你有一个名为“Table1”的Excel表,你可以找到包含数据的最后一行,如下面的第1列数据......

Worksheets("Counters").Cells(2, 1) = ws.ListObjects("Table1").Range.Columns(1).Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

如果您创建了一个名为“Golas”的命名范围,它引用了整个Excel表格,您可以尝试...

Worksheets("Counters").Cells(2, 1) = Range("Goals").Columns(1).Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

要检查表格是否存在,请尝试以下内容......

Dim tbl As ListObject
On Error Resume Next
Set tbl = ws.ListObjects("Goals")
On Error GoTo 0
If Not tbl Is Nothing Then
    Worksheets("Counters").Cells(2, 1) = WorksheetFunction.CountA(ws.ListObjects("Goals").DataBodyRange.Columns(1).Cells)
End If