簡體   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