excel - VBA 设置自动筛选和筛选选定列
问题描述
我正在尝试将自动筛选应用于所有数据,然后在 C 列中过滤掉除“空白”之外的所有单元格。它为第一行选择工作表上的所有数据,但随后给我一个运行时错误 - '未找到命名参数'。
Selection.CurrentRegion.Select
ActiveSheet.AutoFilter Field:=3, Criteria1:="blanks"
我希望自动过滤和过滤列 C 的工作表只显示空白。
解决方案
隐式后期绑定再次来袭!ActiveSheet
is an Object
, not a Worksheet
- 您直接针对它进行的任何成员调用,本质上都是后期绑定的。也就是说,它们只能在运行时解析,并且在编写代码时您可以获得零编译器或 IDE 帮助。
如果你声明了一个Worksheet
对象:
Dim ws As Worksheet
...并将其分配给ActiveSheet
:
Set ws = ActiveSheet
...然后尝试调用其AutoFilter
属性:
ws.AutoFilter
...您很快就会注意到有些东西是关闭的:Worksheet.AutoFilter
不是方法,而是属性(Nothing
如果过滤关闭)。你的意思是使用方法。Range.AutoFilter
使用Selection
将起作用,但与使用ActiveSheet
.
使用 aRange
代替 -CurrentRegion
恰好就是这样!
ws.Range("A1").CurrentRegion.AutoFilter
现在,当您Space在该成员调用之后键入时,您将获得参数快速信息,向您显示参数是什么 - 请注意Field
和Criteroa1
分别是成员签名中的第一个和第二个参数 - 这意味着命名参数实际上是多余的 /参数名和:=
操作符可以省略,传值正常:
ws.Range("A1").CurrentRegion.AutoFilter 3, "blanks"
ws.Range("A1").CurrentRegion.AutoFilter Field:=3, Criteria1:="blanks" '<~ exactly equivalent to the above
推荐阅读
- docker - exec形式的Docker RUN命令不起作用
- pandas - Dataframe 的真值是不明确的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()
- github - Hexo 部署:没有连接到 Github
- javascript - 尝试在 Applescript 中记录此 javascript 变量,但其记录为 (*missing value*)
- javascript - 如果键匹配,则将对象移动到子集
- c++ - 通用引用似乎不起作用,编译器将参数作为 r 值
- docker - 任何可行的方法来使用多个 GPU,多进程和 tensorflow?
- python - numpy eig 与 svd 。为什么他们会产生不同的结果
- mysql - 按以数字开头的字符串排序 - ActiveRecord
- php - 当 data_type 不匹配时,PDO 准备好的语句返回整个表