2016-12-29 28 views
0

複数のセルに入力されたデータに基づいてオートフィルタに使用するマクロがあります。セルA2には「郵便番号を入力」というテキストが含まれ、郵便番号はB2に入力されます。セルA4にはテキスト "Enter service(s)"が含まれ、サービスはB4、B5、B6、およびB7に入力されます。VBAオートフィルタ - 条件=配列。配列が空白のままになっている場合はすべて選択

セルB4、B5、B6、およびB7を空白のままにすると、フィルタはデータを返しません。ただし、それらのセルが空白の場合、フィルタをすべて選択するようにしています。私はもともと5つの可能な選択肢を持つドロップダウンとしてセルB4を持っていたし、空白のままならば、私はすべてを選択するには、次のコードを使用:

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 

このコードは私に望ましい結果が得られますが、セルが空白のままにしている場合、それは内の空のセルを検索しているので、フィルタは何も返しません。範囲内の「サービス」列。

[条件]に[配列]を使用する方法はありますか?空白の場合はすべてを選択しますか?

答えて

0
条件の

だけテストあなたがトラップしたい:

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 
関連する問題