我有一个格式化的表,其样式名为“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
,但它也不起作用。
请帮助,我不知道该怎么做!
答案 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