Kai*_*Kai 1 excel vba excel-vba excel-2010
我有一个过滤的列表对象,需要获取当前可见的行数。我使用以下语句获取行数:
MySheet.ListObjects("MyListObject").DataBodyRange.SpecialCells(xlCellTypeVisible).Rows.count
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,它都有效。但是,当表中只有一两行可见时,即使有两行时它应该返回2 ,它也总是返回1。这是一个已知的问题?如果是这样,是否有任何解决方法?
我宁愿避免手动遍历表中的每一行进行计数,因为它可能很大,而且会非常慢。
更多信息:列表对象已启用“总计”行,并使用以下代码进行过滤:
'Remove existing filter
MySheet.ListObjects("MyListObject").Range.AutoFilter
'Apply new filter
MySheet.ListObjects("MyListObject").Range.AutoFilter Field:=1, Criteria1:=key
Run Code Online (Sandbox Code Playgroud)
其中字段1是(非唯一)键,并且key
是从其他位置检索的字符串。我可以从物理上看到表中有两个可见行(不包括标题行或总计行),但是.Rows.Count
当有2行时始终返回1。
该代码不正确-它将返回过滤后的表格中第一个可见的连续单元格块中的行数。您只应在一栏中计算可见单元的数量:
MySheet.ListObjects("MyListObject").DataBodyRange.Columns(1).SpecialCells(xlCellTypeVisible).count
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10406 次 |
最近记录: |