vba - ListObject.DataBodyRange.SpecialCells(xlCellTypeVisible).Rows.count 返回错误值

标签 vba excel excel-2010

我有一个过滤的列表对象,需要获取当前可见的行数。我使用此语句来获取行数:

MySheet.ListObjects("MyListObject").DataBodyRange.SpecialCells(xlCellTypeVisible).Rows.count

大多数时候它都有效。但是当表只有一两行可见时,它总是返回 1,即使它应该在有两行时返回 2。这是一个已知的问题?如果是这样,是否有任何解决方法?

我宁愿避免手动循环遍历表中的每一行来计数,因为它可能非常大,而且速度会非常慢。

更多信息:列表对象启用了总计行,并使用以下代码进行过滤:
'Remove existing filter
MySheet.ListObjects("MyListObject").Range.AutoFilter

'Apply new filter
MySheet.ListObjects("MyListObject").Range.AutoFilter Field:=1, Criteria1:=key

其中字段 1 是(非唯一)键,key是从其他地方检索到的字符串。我可以实际看到表格中有两个可见行(不包括标题或总计行),但 .Rows.Count当有 2 行时,始终返回 1。

最佳答案

该代码不正确-它将返回过滤表中第一个可见的连续单元格 block 中的行数。您应该只计算一列中可见单元格的数量:

MySheet.ListObjects("MyListObject").DataBodyRange.Columns(1).SpecialCells(xlCellTypeVisible).count

关于vba - ListObject.DataBodyRange.SpecialCells(xlCellTypeVisible).Rows.count 返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24137488/

相关文章:

vba - 在 MS Word 中找到文档中表格所在的标题

java - 阻止在 EXCEL 中使用 PASTE(Java 和 org.apache.poi)

excel - 特定交易的中位数

Excel VBA运行时错误 '13'类型不匹配

excel - 如何将日期字符串与 Excel 中的日期进行转换和比较

vba - Worksheet_SelectionChange 未执行所需任务

vba - vba中的运算符

c# - ACE OLEDB "External table is not in the expected format"在 Excel 单元格中带有大文本

java - Apache POI Excel 工作表 : resize a picture while keeping its ratio

vba - 如何在 Excel 中查找单元格的所有依赖项(还有条件格式和数据验证)