ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 怎么启用和取消Private Sub Worksheet_Activate()的高级筛选呢?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-7-30 06:55 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
怎么启用取消Private Sub Worksheet_Activate()的高级筛选呢?

下面是高级筛选代码(受保护工作表密码为333):
Private Sub Worksheet_Activate()
ActiveSheet.Unprotect Password:="333"
    st = Sheets("基本设置").[N7].Value
    ActiveSheet.Range("m8:m" & Cells(Rows.Count, 3).End(3).Row).AutoFilter Field:=1, Criteria1:=st, _
        Operator:=xlOr, Criteria2:="="   
ActiveSheet.Protect Password:="333"
End Sub



就是想做两个按钮(分别指定宏),一个启用高级筛选,一个暂时取消高级筛选

TA的精华主题

TA的得分主题

发表于 2015-7-30 07:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
你这是自动筛选,不是高级筛选吧
if activesheet.filtermode then
   activesheet.filtermode=flase
else
ActiveSheet.Unprotect Password:="333"
    st = Sheets("基本设置").[N7].Value
    ActiveSheet.Range("m8:m" & Cells(Rows.Count, 3).End(3).Row).AutoFilter Field:=1, Criteria1:=st, _
        Operator:=xlOr, Criteria2:="="   
ActiveSheet.Protect Password:="333"
  

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-7-30 08:22 | 显示全部楼层
huang1314wei 发表于 2015-7-30 07:44
你这是自动筛选,不是高级筛选吧
if activesheet.filtermode then
   activesheet.filtermode=flase


是的,是用代码自动筛选有筛选前头的各工作表(需要筛选的有6个工作表)的列(需要筛选的相应工作表内必需复制有此代码才能筛选)。

请问老师你这代码怎么用:
1:怎样一键暂时取消参加筛选的全部6个工作表的自动筛选?
2:怎么再恢复参加筛选的全部6个工作表的自动筛选?

TA的精华主题

TA的得分主题

发表于 2015-7-30 08:30 | 显示全部楼层
zyhui1961 发表于 2015-7-30 08:22
是的,是用代码自动筛选有筛选前头的各工作表(需要筛选的有6个工作表)的列(需要筛选的相应工作表内必需 ...

暂时取消
for each ws in worksheets
  if ws.filtermode then
    ws.filtermode=flase
  end if
next

恢复筛选状态
for each ws in worksheets
    if not ws.filtermode then
      ws.range("A1").autofilter
   end if
next

如果有问题,请上传你的附件说明问题

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-7-30 10:57 | 显示全部楼层
huang1314wei 发表于 2015-7-30 08:30
暂时取消
for each ws in worksheets
  if ws.filtermode then

好的,我来上传个附件,请老师帮忙看一下,谢谢!!

启动筛选、取消筛选.zip

155.87 KB, 下载次数: 17

TA的精华主题

TA的得分主题

发表于 2018-8-25 21:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
想看老师最后的结果,谢谢分享

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-3 08:58 | 显示全部楼层
新炊间黄梁 发表于 2018-8-25 21:42
想看老师最后的结果,谢谢分享

我那个文件涉及好多不能公开的东西(请谅解),用下面已经很成熟的代码你自己研究一下(“退绩”是当前工作表名、  st = Sheets("说明").[K6].Value是要筛选的引用单元格):
Private Sub Worksheet_Activate()
ActiveSheet.Unprotect Password:="333"

    ActiveWorkbook.Worksheets("退绩").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("退绩").Sort.SortFields.Add Key:=Range("C7:C350"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("退绩").Sort.SortFields.Add Key:=Range("G7:G350"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("退绩").Sort.SortFields.Add Key:=Range("E7:E350"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("退绩").Sort
        .SetRange Range("C7:J350")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

    st = Sheets("说明").[K6].Value
    ActiveSheet.Range("m8:m" & Cells(Rows.Count, 3).End(3).Row).AutoFilter Field:=1, Criteria1:=st, _
        Operator:=xlOr, Criteria2:="=1"
        Range("A7:A17").Select
        ActiveSheet.Protect Password:="333"

End Sub


TA的精华主题

TA的得分主题

发表于 2018-9-7 20:19 | 显示全部楼层
zyhui1961 发表于 2018-9-3 08:58
我那个文件涉及好多不能公开的东西(请谅解),用下面已经很成熟的代码你自己研究一下(“退绩”是当前工 ...

谢谢大神指点啦,我先学学看。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-13 20:52 , Processed in 0.042185 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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