Excel 为什么这种范围选择方法在过滤数据时有时会停止工作?
我对Selection.End(xlDown)范围选择操作有疑问。我对一大组数据使用过滤器,通过选择数据中的第一行,然后应用此操作高亮显示所有占用的单元格,然后将计数缩小到仅可见的单元格,计算应用过滤器后出现的单元格数:Excel 为什么这种范围选择方法在过滤数据时有时会停止工作?,excel,filtering,selection,vba,Excel,Filtering,Selection,Vba,我对Selection.End(xlDown)范围选择操作有疑问。我对一大组数据使用过滤器,通过选择数据中的第一行,然后应用此操作高亮显示所有占用的单元格,然后将计数缩小到仅可见的单元格,计算应用过滤器后出现的单元格数: Range("L3").Select Range(Selection, Selection.End(xlDown)).Select Selection.SpecialCells(xlCellTypeVisible).Select Set masterfilterrange =
Range("L3").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.SpecialCells(xlCellTypeVisible).Select
Set masterfilterrange = Selection
count = Application.count(masterfilterrange)
这通常有效,但有时无效。通过单步遍历代码,我看到当执行此代码时,只选择了可见(过滤)范围中的第一个单元格,因此计数将仅为1。我试着这样做:
Range("L3").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.SpecialCells(xlCellTypeVisible).Select
Set masterfilterrange = Selection
count = Application.count(masterfilterrange)
但这没用。我在另一台计算机上运行了宏,它恢复了正常工作。。有人知道为什么它一开始会起作用,但最终开始不起作用吗?我无法复制您所描述的内容。
这不是对您问题的真正回答,但不能用于评论。
您可以做的是从过滤器开始显式地处理您的范围 例如:
Dim r As Range, count As Long
'you can use known ways of dynamically setting this
Set r = Sheets("Sheet1").Range("L2:P100") 'L2 have the headers
r.AutoFilter 1, "your_Criteria" 'filter field one using your criteria
'Use Offset and Resize to count L3 to last cell only
count = r.Offset(1, 0).Resize(, 1).SpecialCells(xlCellTypeVisible).Count
或者如果你的代码符合你的目的
count = Application.Count(r.Offset(1, 0).Resize(, 1).SpecialCells(xlCellTypeVisible))