VBA 设置自动筛选并筛选选定的列
VBA to set AutoFilter and filter selected columns
我正在尝试将自动筛选应用于所有数据,然后筛选出 C 列中除“空白”之外的所有单元格。它选择工作中的所有数据sheet 作为第一行,然后给我一个运行-时间错误-'Named argument not found'.
Selection.CurrentRegion.Select
ActiveSheet.AutoFilter Field:=3, Criteria1:="blanks"
我希望 sheet 自动筛选并筛选 C 列以仅显示空白。
隐式后期绑定再次来袭! ActiveSheet
是 Object
,而不是 Worksheet
- 您直接针对它进行的任何成员调用本质上都是延迟绑定的。也就是说,它们只能在 运行 时解决,并且您在编写代码时得到零编译器或 IDE 帮助。
如果您声明了一个 Worksheet
对象:
Dim ws As Worksheet
...并将其分配给 ActiveSheet
:
Set ws = ActiveSheet
...然后尝试调用其 AutoFilter
property:
ws.AutoFilter
...您很快就会发现有什么不对:Worksheet.AutoFilter
不是 方法 ,而是 属性 (如果过滤关闭则为 Nothing
)。您的意思是使用 Range.AutoFilter
方法 .
使用 Selection
可以工作,但与使用 ActiveSheet
一样晚绑定。
改为使用 Range
- 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
Rows("1:1").AutoFilter field:=3, Criteria1:=""
我正在尝试将自动筛选应用于所有数据,然后筛选出 C 列中除“空白”之外的所有单元格。它选择工作中的所有数据sheet 作为第一行,然后给我一个运行-时间错误-'Named argument not found'.
Selection.CurrentRegion.Select
ActiveSheet.AutoFilter Field:=3, Criteria1:="blanks"
我希望 sheet 自动筛选并筛选 C 列以仅显示空白。
隐式后期绑定再次来袭! ActiveSheet
是 Object
,而不是 Worksheet
- 您直接针对它进行的任何成员调用本质上都是延迟绑定的。也就是说,它们只能在 运行 时解决,并且您在编写代码时得到零编译器或 IDE 帮助。
如果您声明了一个 Worksheet
对象:
Dim ws As Worksheet
...并将其分配给 ActiveSheet
:
Set ws = ActiveSheet
...然后尝试调用其 AutoFilter
property:
ws.AutoFilter
...您很快就会发现有什么不对:Worksheet.AutoFilter
不是 方法 ,而是 属性 (如果过滤关闭则为 Nothing
)。您的意思是使用 Range.AutoFilter
方法 .
使用 Selection
可以工作,但与使用 ActiveSheet
一样晚绑定。
改为使用 Range
- 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
Rows("1:1").AutoFilter field:=3, Criteria1:=""