ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: fcy

[讨论]如何扑捉自动筛选的动作?

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-10-31 15:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖已被收录到知识树中,索引项:Range对象

'显示筛选名称的函数20041030 Function FilterCriteria(Rng As Range) As String Application.Volatile Dim Filter As String Filter = "" On Error GoTo Finish With Rng.Parent.AutoFilter If Intersect(Rng, .Range) Is Nothing Then GoTo Finish With .Filters(Rng.Column - .Range.Column + 1) If Not .On Then GoTo Finish Filter = Mid(.Criteria1, 2) Select Case .Operator Case xlAnd Filter = Filter & " 和 " & Mid(.Criteria2, 2) Case xlOr Filter = Filter & " 或 " & Mid(.Criteria2, 2) End Select End With End With Finish: FilterCriteria = Filter End Function

以上是修改后的程序,去掉了显示条件前面的“=”号。

[此贴子已经被作者于2004-10-31 15:37:59编辑过]

TA的精华主题

TA的得分主题

发表于 2004-10-31 16:41 | 显示全部楼层

11楼是在单元格中去掉自动筛选的 逻辑符号 ,

如果两个条件都是用来筛选"=" 的时候,可能看起来比较清爽,(估计是其用意所在)

如果是通过自定义筛选,万万不可使用,否则">="就 成了"=",造成误解

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-11-1 18:24 | 显示全部楼层
以下是引用asdf1001在2004-10-31 16:41:00的发言:

11楼是在单元格中去掉自动筛选的 逻辑符号 ,

如果两个条件都是用来筛选"=" 的时候,可能看起来比较清爽,(估计是其用意所在)

如果是通过自定义筛选,万万不可使用,否则">="就 成了"=",造成误解

楼上说得在理,以下又进行了修改,可以满足不同的需要。

'显示筛选名称的函数20041101 Function FilterCriteria(Rng As Range) As String Application.Volatile Dim Filter As String Filter = "" On Error GoTo Finish With Rng.Parent.AutoFilter If Intersect(Rng, .Range) Is Nothing Then GoTo Finish With .Filters(Rng.Column - .Range.Column + 1) If Not .On Then GoTo Finish Filter = .Criteria1 Select Case .Operator Case xlAnd Filter = Filter & " 和 " & .Criteria2 Case xlOr Filter = Filter & " 或 " & .Criteria2 End Select '当不进行自定义筛选时去掉条件前的"="号 If .Operator <> xlAnd And .Operator <> xlOr Then Filter = Mid(.Criteria1, 2) End With End With Finish: FilterCriteria = Filter End Function

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-11-2 08:09 | 显示全部楼层
以下是引用fcy在2004-10-30 10:55:00的发言:

如何扑捉自动筛选的动作?

当进行筛选操作时,能不能通过vba扑捉当前是否进行了筛选操作,并做出相应反应,触发相应事件。

现在可以解决这个问题了:在表中任意插入一个公式,选用Worksheet_Calculate()重新计算事件即可实现该功能。以下宏根据实际需要可进行修改:

Private Sub Worksheet_Calculate() Application.EnableEvents = False '加上此语句非常重要 Dim i As Integer If Not Sheets("Sheet1").AutoFilterMode Then Cells(2, 4).Value = "职务:" Exit Sub End If '填充筛选条件 With Sheets("Sheet1").AutoFilter 'For i = 1 To 4 ' If .Filters(i).On Then Cells(1, i).Value = "*" & .Filters(i).Criteria1 'Next If .Filters(2).On Then fit = .Filters(2).Criteria1 Cells(2, 6).Value = Mid(fit, 2) Else Cells(2, 6).Value = "" End If End With Application.EnableEvents = True '加上此语句非常重要

End Sub '20041031调试成功

以上宏适用于直接筛选,不适用于自定义筛选!

[em17][em17][em17][em17][em17][em25][em25][em23]
[此贴子已经被作者于2004-11-2 8:16:24编辑过]

TA的精华主题

TA的得分主题

发表于 2009-12-18 07:27 | 显示全部楼层

请教

请问:在 With Rng.Parent.AutoFiler 中的 Parent 是起什么作用的。这一句是说:“读取所有单元格的筛选器。”可咱一直没弄明白。请那位高手给于指教。
我是初学者,问题如果幼稚请不要笑咱。

TA的精华主题

TA的得分主题

发表于 2010-10-27 22:38 | 显示全部楼层

非常感激楼主分享

努力加油学习中

TA的精华主题

TA的得分主题

发表于 2013-8-12 16:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
不错,仔细研究一下
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-24 06:40 , Processed in 0.034908 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表