我正在尝试检查表上的过滤器是否存在
Criteria2
。如果只有一个条件或者 Criteria1
是一个数组,我会收到错误。有没有办法检查过滤器的条件是否存在或条件的类型?
我的代码给了我一个运行时错误
'1004': Application-defined or object-defined error
。
仅当我选择了 2 个标准时它才有效。如果我选择了一个条件或选择了一个数组,则它不起作用。
If MyTable.AutoFilter.Filters(2).Criteria2 <> "" Then
Debug.Print "yes c2"
Else
Debug.Print "no c2"
End If
您可以检查
.Count
属性:
If MyTable.AutoFilter.Filters(2).Count > 1 Then
Debug.Print "yes c2"
Else
Debug.Print "no c2"
End If
我知道这已经很旧了,但希望这个答案可以帮助那里的人。
在 VBA 中使用工作表自动筛选时,我也找不到一种方法来检查 Criteria2 是否有值而不抛出异常。但是,根据 Microsoft 关于 XlAutoFilterOperator 枚举(即 Operator 属性的类型)的文档,我相信只有当 Operator 的值为 xlAnd (1) 或 xlOr (2) 时,Criteria2 才具有值。
微软的文档:XlAutoFilterOperator枚举(Excel)
如果OP的代码更新如下,它应该可以工作:
If MyTable.AutoFilter.Filters(2).Operator = xlAnd _
Or MyTable.AutoFilter.Filters(2).Operator = xlOr _
Then
'MyTable.AutoFilter.Filters(2).Criteria2 will be accessible
Debug.Print "yes c2"
Else
'MyTable.AutoFilter.Filters(2).Criteria2 will NOT be accessible
Debug.Print "no c2"
End If