作者:绿色风
分类:
时间:2022-08-17
浏览:140
楼主 罗刚君 |
Q:工作表中是否处于筛选状态,通过行标题的颜色可以快速地判断。然而想知道表中设置的具体筛选条件该如何处理?如果有多个条件必须一并取出来 A:草兄用公式实现取筛选条件,不过那是针对“=XX”的,而对于“<XX”和“>XX”则不行,而且筛选条件有多个时更不行。利用VBA可以完美的解决这个问题
- Sub 获取筛选条件()
- On Error Resume Next
- Dim str As String
- With ActiveSheet '引用工作表
- If .AutoFilterMode Then '如果处于筛选模式下
- For i = 1 To .AutoFilter.Filters.Count ' 遍历每一个筛选对象
- '如果该列有筛选条件,那么报告两个筛选的条件(若只有一个,第二个条件显示为空白)
- If .AutoFilter.Filters(i).On Then
- str = .AutoFilter.Filters(i).Criteria2
- If Err = 0 Then
- MsgBox "第" & i & "列筛选条件为:" & Chr(10) & .AutoFilter.Filters(i).Criteria1 & Chr(10) & .AutoFilter.Filters(i).Criteria2
- Else
- MsgBox "第" & i & "列筛选条件为:" & Chr(10) & .AutoFilter.Filters(i).Criteria1
- End If
- Err.Clear
- End If
- Next
- End If
- End With
- End Sub
筛选.rar |
2楼 monvzhilei |
罗版出手,就像金庸武侠小说里面的绝世高手。哈哈 |
3楼 罗刚君 |
如果工作表处理筛选模式下,VBA判断语句为“ If ActiveSheet.AutoFilterMode ”,这是防错的必然手段 而对于筛选的条件个数,没有直接的方法,所以先引用第二个条件 str = .AutoFilter.Filters(i).Criteria2 如果有错误,那么表示只有一个条件 使用以下语句: MsgBox "第" & i & "列筛选条件为:" & Chr(10) & .AutoFilter.Filters(i).Criteria1
最后一个问题是筛选区域有很多列,但并非每列都有筛选条件,所以使用循环进行判断 AutoFilter.Filters(i).On 其中On表示有筛选条件 ___________________________________________________________ 初充:我发现WPS在这方面做得更好,可以直接使用“ .AutoFilter.Filters(i).Criteria1 & Chr(10) & .AutoFilter.Filters(i).Criteria2” 如果第二个条件不存在,WPS将它当成空文本处理,这比Excel人性化一些 |
4楼 天南地北 |
看看罗版的大作! |
5楼 lcf |
学习,必须的 |
6楼 lcf |
学习 必须的 |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一