1 range().autofilter容易出错的地方

1.1 range().autofilter的返回值

  • range().autofilter
  • 返回值总是 true
  • 返回值并不是对象,而是执行一个筛选的操作
  • 所以
Sub test1_filter5()
'Dim rng1 As Range
'Set rng1 = Range("b1:b20").AutoFilter(field:=1, Criteria1:=5)
'Debug.Print rng1.AddressDebug.Print Range("b1:b20").AutoFilter(field:=1, Criteria1:=5)
Debug.Print Range("b1:b20").AutoFilter(field:=1, Criteria1:=55555)End Sub

1.2 因此,调用 range().autofilter() 写法一般都不带括号

  • 如上面的例子

  • range().autofilter() 也可以带参数+括号,但是返回值的意义不大

  • 所以一般,都不带括号,因为也不需要调用其返回值
Sub test001()
Range("a:a").AutoFilter field:=1, Criteria1:="10002"
End Sub

1.3 range().autofilter() 容易笔误出错的地方

  • 语法
  • 表达式.AutoFilter(Field, Criteria1,Operator, Criteria2, VisibleDropDown)

容易出错的例子

  • 容易出错的地方
  • Range("a:a").AutoFilter field:=1, Criteria1:="10002"
  • 注意 Criteria1:="10002" 不是 Criterial:="10002" 是1 不是l 而且,中间也不能有间隔 Criteria1
  • 你要理解 Criteria1 是要查找的内容,而且有2个参数,所以是 Criteria1 和 Criteria2,不是L

2 range().autofilter的 功能学习

2.1 基础语法

  • 表达式.AutoFilter(Field, Criteria1,Operator, Criteria2, VisibleDropDown)
  • Field,类vlookup 一样,默认左边第1列为1,右边的列为2,3,4。。。。
  • criteria1
  • criteria2
  • operator   控制2个标准之间的逻辑关系
  • visibleDropDown   控制下拉框

2.2 range().autofilter 什么参数都不带,那就只是打开 此区域相关区域的筛选

  • 就是把 range() 区域相连接的区域,全部实现筛选
  • 如果运行多次,开一次,关一次

2.2.1 运行两次,1次开1次关(不知道原理?)

  • 运行第1次,开启筛选
  • 运行第2次,关闭筛选
Sub test1_filter30()Range("a1").AutoFilterEnd Sub
  • 有问题的地方
  • 如果多加了一句: Debug.Print Range("a1").AutoFilter,结果筛选完全打不开了?
Sub test1_filter31()
Debug.Print Range("a1").AutoFilter
Range("a1").AutoFilter
End Sub

2.3 多个 range().autofilter,会多次执行,按最后一次的执行,而且可能有问题

暂时原因不明

  • 如果同时执行了多个 range().autofilter,感觉会执行多次
  • 一般是按最后一次的   range().autofilter (交互次序会发现筛选结果不同)
  • 但有时候啥也不执行,也不筛选了
  • 安全的做法
  • 一次只做1次筛选,把筛选区域写合适。
Sub test1_filter40()
Range("a1").AutoFilter
Range("b1").AutoFilter
End SubSub test1_filter41()
Range("a1:a20").AutoFilter field:=1, Criteria1:=115
Range("b1").AutoFilter
End Sub'前2个例子都是有问题的Sub test1_filter42()
Range("a1:b1").AutoFilter
End Sub

2.4 range() 选 标题头,列头就行了?

2.4.1 无参数时,下面两种写法是无差别的

Sub test1_filter50()
Range("a1:b1").AutoFilter
End SubSub test1_filter51()
Range("a1:b20").AutoFilter
End Sub

2.4.2 即使有参数,下面两种写法也差不多,range("a1:b10") 相当于 range("a1:b1") 也相当于 range("a:b")

Sub test1_filter50()
Range("a1:b1").AutoFilter field:=2, Criteria1:=">=10"
End SubSub test1_filter51()
Range("a1:b20").AutoFilter field:=1, Criteria1:="999"
End Sub

2.5 报错处理

  • 不能超过range()本身的范围
  • 下面的报错,因为field:=3,因为range() 本身才2列

3  range().autofilter的返回值 ----replace() 也一样?

  • range().autofilter
  • 返回值总是 true
  • 返回值并不是对象,而是执行一个筛选的操作
  • 所以
Sub test1_filter5()
'Dim rng1 As Range
'Set rng1 = Range("b1:b20").AutoFilter(field:=1, Criteria1:=5)
'Debug.Print rng1.AddressDebug.Print Range("b1:b20").AutoFilter(field:=1, Criteria1:=5)
Debug.Print Range("b1:b20").AutoFilter(field:=1, Criteria1:=55555)End Sub

参考文章

https://www.jianshu.com/p/0ab092d1de52

关于 range.autofilter 和 VBA的 filter相关推荐

  1. VBA,关于filter()函数的局限性和原理,自己写了一个仿造filter同功能自定义函数

    1 filter() 函数的局限性 1.1 filter() 非精确查找,是模糊查询,类似于 like 的功能 filter() 非精确查找,是模糊查询,类似于 like 的功能 1.2 Filter ...

  2. VBA for Excel 筛选功能 autofilter

    range().autofilter filed:=N,criteria 1:=***, operator:=xland,criteria2:=*** N 不是代表第N列,是range里的N列: ra ...

  3. VBA在Excel中的应用(二)

    目录 AutoFilter Binding Cell Comments Cell Copy Cell Format Cell Number Format Cell Value Cell AutoFil ...

  4. VBA Excel 自定义函数不能调用成功的问题的解决方法

    VBA Excel 自定义函数不能调用成功的问题的解决方法 问题以及解决方案的列举(持续更新中) 问题以及解决方案的列举(持续更新中) 自定义函数是自动化各种Excel重复操作的重要函数,我们可以用它 ...

  5. VBA Excel 单元格内多行内容的文字处理方法

    VBA Excel 实现单元格内多行内容的文字处理方法 在Excel中有很多的函数可以作用于单元格,但是其对单元格整体进行操作,因此单元格数据最好只有一行,这样Excel函数才能运行正确.但是有时候一 ...

  6. 利用VBA处理Excel 2007中的表

    在Excel对象模型中,表(Table)由ListObjects对象代表.下面列举一些在Excel 2007中使用VBA处理表的示例代码. http://www.blue1000.com/bkhtml ...

  7. vba 编辑combobox内容_初识Visual Basic编辑器并建立一段简单的代码

    大家好,从今日开始我正式推出"VBA之EXCEL应用"教程,这个教程是面向初学人员的教程,教程一共三册,十七个章节,从简单的录制宏实现一直讲到窗体的搭建,都是我们在利用EXCEL工 ...

  8. vba代码编程800例_VBA编程常用“积木”过程代码Address的含义

    蓝字关注,加微信NZ9668获资料信息  VBA解决方案   系列丛书作者  头条百家平台 VBA资深创作者 _______________________________ 大家好,今日继续和大家分享 ...

  9. python filter函数

    number_list = range(-5, 5) less_than_zero = list(filter(lambda x: x < 0, number_list)) print(less ...

最新文章

  1. 图灵四月书讯 ——经典与技术前沿的融合
  2. 拯救顽疾大作战!IDC绘中国医疗AI生态图谱,英伟达献医疗影像新杀器
  3. 互联网创业如何与传统行业人士合作?
  4. 深入解读Python的unittest并拓展HTMLTestRunner
  5. 【sprinb-boot】thymeleaf设置缓存
  6. 公司鼓励程序员不要加班,去约会!
  7. php nodelist,了解NodeList、HTMLCollection以及NamedNodeMap的使用(代码)
  8. ssm企业人事管理系统人事管理系统(企业人事管理系统)企业人事人力资源管理系统
  9. PTES_Technical_Guidelines(渗透测试执行标准)
  10. GMP认证计算机化系统验证
  11. 非主流字体输入法_魏大勋更博晒非主流自拍,粉丝的关注点却在他的字体上,太复杂了...
  12. 22岁阻止席卷网络的病毒,却因开发恶意软件被捕,这是传奇黑客马库斯的故事...
  13. android开发点击版本号多次无法进入开发者模式模式
  14. Office文件转PDF的解决方案
  15. 计算机硬件是怎么影响性能的,哪些硬件影响电脑的性能
  16. jsp传递参数java_JSP页面间传递参数方法介绍
  17. CoreData Model
  18. Visual studio —— error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include “StdAfx.h“”?
  19. 停止不必要的Windows服务
  20. [句子成分] 二、谓语 表语

热门文章

  1. DC-DC BOOST空载输入电流如何计算?
  2. vue 父传子 子传父实现方式
  3. 协议僵化 or 协议僵化
  4. Bootstrap 表格内容水平、垂直居中
  5. echarts网络拓扑图动态流程图
  6. 详解Unity中的粒子系统Particle System (十)
  7. 2020.10.13--PS--像素化滤镜、扭曲类滤镜、波浪和水波
  8. 地图和地理空间革命:地理学大规模开放在线课堂(MOOC)
  9. 【云原生】还不会使用linux?快看这里,在window快速安装centos系统
  10. MS VC6 链接错误处理