2017-12-07 22 views
0

したがって、データセットでフィルタリングする領域をユーザーが選択するマルチ選択リストボックスがあります。リストボックスを複数のセルに出力してオートフィルタの配列に使用する

現在出力このサブを使用して、単一の細胞内へのこれらの選択I:自分のワークブックを更新するために実行するマクロのユーザーの終わりに

Dim listItems As String, i As Long 
With RegionListBox 
    For i = 0 To .ListCount - 1 
     If .Selected(i) Then listItems = listItems & .List(i) & ", " 
    Next i 
End With 

Range("AA1") = Left(listItems, Len(listItems) - 2) 

が、私は出力を持っている値を使用してフィルタを適用したいですリストボックスから。現在、これは私がそれを行う方法です:ユーザーが複数の選択肢を選択した場合、AA1での出力が「テキスト、テキスト、テキスト」のようにフォーマットされるように

Worksheets("4. Booking Summary").Range("$A$1:$G$1000" _ 
).AutoFilter Field:=4, Criteria1:=(Range("$AA$1").Value),` Operator:=xlFilterValues 

は、残念ながら、これは、動作しません。このフィルタを適用しようとすると、その完全な文字列でテキストフィルタが適用されます。それが所望の機能を有するためには、選択された各項目と共に配列を使用してフィルタリングする必要がある。

私は少しこれを達成する方法に固執しています。私の考えでは、各リストボックスの選択を単一のセルに出力し、そのセルを参照する配列にオートフィルター基準を設定する必要がありました。私はこれをどうやって行うのか分かりません。ご提案があれば幸いです。

+0

'Criteria1'それを行う必要があります=スプリットを –

+0

ティム、あなたチャンピオン。私はコンマを使ってこれらの値を分割する方法が必要であると思っていました!それは私の前で正にその時でした。 – dweeman

答えて

1

あなたは配列を作成するためにスプリット()を使用することができます(。値は、 "" レンジ( "$のAA $ 1")):

Criteria1:=Split(Range("$AA$1").Value,", ") 
関連する問題