繁体   English   中英

VBA自动筛选-条件=数组。 如果数组留空则全选

[英]VBA AutoFilter - Criteria = Array. Select all if array is left blank

我有一个宏,用于根据输入到多个单元格中的数据自动过滤范围。 单元格A2包含文本“输入邮政编码”,并且要在B2中输入邮政编码。 单元格A4包含文本“输入服务”,并且该服务将在B4,B5,B6和B7中输入。

如果我将单元格B4,B5,B6和B7留空,则过滤器不会返回任何数据。 但是,如果这些单元格为空,我试图让过滤器选择全部。 我最初使用单元格B4作为下拉菜单,其中包含5种可能的选择,并且我使用以下代码选择了所有空白(如果留空):

My_Range.AutoFilter Field:=11, Criteria1:="=" & Range("B2").Value
My_Range.AutoFilter Field:=1, Criteria1:=IIf(Trim(Range("B4").Value) = "", "<>", "=") & Range("B4").Value

但是,我希望选择基于将哪些数据输入到那些单元格(B4,B5,B6,B7)中来过滤各种组合的选项。 为了做到这一点,我将代码更改为以下代码:

My_Range.AutoFilter Field:=11, Criteria1:="=" & Range("B2").Value
My_Range.AutoFilter Field:=1, Criteria1:=Array(Range("B4").Value, Range("B5").Value, Range("B6").Value, Range("B7").Value), Operator:=xlFilterValues

这段代码给了我想要的结果,但是如果单元格留为空白,则过滤器不会返回任何内容,因为它正在搜索范围内“服务”列中的空单元格。

有没有一种方法可以将数组用于条件,但是如果全部为空,则选择全部?

只需测试您希望捕获的条件:

If Len([B4] & [B5] & [B6] & [B7]) = 0 Then
    My_Range.AutoFilter Field:=1
Else
    My_Range.AutoFilter Field:=1, Criteria1:=Array(Range("B4").Value, Range("B5").Value, Range("B6").Value, Range("B7").Value), Operator:=xlFilterValues
End If

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM