VBA:如何检查过滤条件2是否存在?

问题描述 投票:0回答:2

我正在尝试检查表上的过滤器是否存在

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
excel vba filter criteria
2个回答
0
投票

您可以检查

.Count
属性:

If MyTable.AutoFilter.Filters(2).Count > 1 Then
    Debug.Print "yes c2"
Else
    Debug.Print "no c2"
End If

0
投票

我知道这已经很旧了,但希望这个答案可以帮助那里的人。

在 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
© www.soinside.com 2019 - 2024. All rights reserved.