|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
楼主你好:
用函数无法实现,但是VBA可以直接实现。我上面给的方法是以前自己写的,数据小的时候很好用(比如2000行,20列数据)的话。但是如果你有上万行数据,上百列的时候很超级慢了,所以经过对VBA仔细研究,发现其实有现成又直接的方法可以调用,以下结合我自己的需求和网上找的方法修改而来的代码。你要看一下你的筛选符号是第几行,自己修改一下cells(9,i)中的行号,就可以了。好了,上代码:
Sub 已筛选位置判断()
Dim i As Integer, Str, Count, YuanSu, AddC
'检查是否设置了自动筛选
If ActiveSheet.FilterMode = False Then
MsgBox "没有设置自动筛选,不必担心遗漏!", vbCritical, "小哥哥你好:"
Exit Sub
Else
'MsgBox "有筛选"
For i = 1 To ActiveSheet.AutoFilter.Filters.Count
'检查该字段是否有设置筛选条件
With ActiveSheet.AutoFilter.Filters.Item(i)
If .On Then
YuanSu = .Count
AddC = Split(Cells(9, i).Address, "$")(1) 'i就是有筛选符号的列,它是一个数字,被称呼为字段,通过cells(R,C)函数对象找到address,再通过split函数去掉后面一个$符号,获得简写的列标。
MsgBox AddC & i & Chr(13) & Chr(13) & "此列存在筛选,当前显示了其中的: " & YuanSu & "个元素项.", vbExclamation, "第" & i & "列" & "即:" & AddC & i
Range(Cells(9, i), Cells(9, i)).Select
End If
End With
Next
End If
亲测有效,而且和很快速哦。
|
评分
-
1
查看全部评分
-
|