Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 为什么这种范围选择方法在过滤数据时有时会停止工作?_Excel_Filtering_Selection_Vba - Fatal编程技术网

Excel 为什么这种范围选择方法在过滤数据时有时会停止工作?

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 =

我对Selection.End(xlDown)范围选择操作有疑问。我对一大组数据使用过滤器,通过选择数据中的第一行,然后应用此操作高亮显示所有占用的单元格,然后将计数缩小到仅可见的单元格,计算应用过滤器后出现的单元格数:

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))