ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 9319|回复: 16

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

[复制链接]

TA的精华主题

TA的得分主题

发表于 2004-10-30 10:55 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:Range对象

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

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

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-10-30 11:19 | 显示全部楼层

请看示例:

KdvwU4tj.rar (11.44 KB, 下载次数: 326)

[此贴子已经被作者于2004-10-30 11:32:01编辑过]

TA的精华主题

TA的得分主题

发表于 2004-10-30 14:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

将它做成工作表自定函数并用于需要的单元格,当你筛选后自动更新。

参考j-walk的自定函数:

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
        End With
    End With
Finish:
    FilterCriteria = Filter
End Function

[此贴子已经被taller于2007-8-2 12:21:47编辑过]

TA的精华主题

TA的得分主题

发表于 2004-10-30 14:33 | 显示全部楼层
以下是引用shangyu在2004-10-30 14:26:00的发言:

将它做成工作表自定函数并用于需要的单元格,当你筛选后自动更新。

参考j-walk的自定函数:

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 End With End With Finish: FilterCriteria = Filter End Function

意外收获,谢谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-10-30 16:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
以下是引用shangyu在2004-10-30 14:26:00的发言:

将它做成工作表自定函数并用于需要的单元格,当你筛选后自动更新。

参考j-walk的自定函数:

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 End With End With Finish: FilterCriteria = Filter End Function

请问如何使用此自定义函数?Rng 变量指什么?

TA的精华主题

TA的得分主题

发表于 2004-10-30 16:22 | 显示全部楼层

将这段代码放入模块中;

在你工作表的单元格(如B1)输入=FilterCriteria(B2),其中B2是筛选字段的单元格;

当你在B2筛选不同内容时,B1反映你筛选的内容。

TA的精华主题

TA的得分主题

发表于 2004-10-30 16:40 | 显示全部楼层

为什么出现#name?

我在sheet1中插入子过程:

Sub a() Call FilterCriteria(Range("c3")) End Sub 倒未出现错误。请问参数到底应该怎么输入?

见附件,我把函数输入在A1单元格。 pnx0rjyz.rar (13.02 KB, 下载次数: 56)
[此贴子已经被作者于2004-10-30 16:43:04编辑过]

TA的精华主题

TA的得分主题

发表于 2004-10-30 16:53 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
以下是引用wuaza在2004-10-30 16:40:00的发言:

为什么出现#name?

不是放入工作表模块、放入普通模块中: jQOaHouB.rar (13.7 KB, 下载次数: 264)

TA的精华主题

TA的得分主题

发表于 2004-10-30 17:06 | 显示全部楼层
犯了同7楼楼主错误,原来是这问题. 3楼 shangyu 版主这一招解的好,实用,刚好也遇到这样困扰,终于在这里得到解答,谢谢版主.

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-10-30 17:46 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-19 14:27 , Processed in 0.048634 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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