将列表框输出到多个单元格以用于自动过滤器阵列

时间:2017-12-07 00:07:38

标签: excel vba excel-vba

所以我有一个多选列表框,用户可以选择要在数据集中过滤的区域。

我目前使用此子句将这些选择输出到单个单元格中:

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)

在宏用户运行以更新其工作簿的最后,我想使用从列表框输出的值来应用过滤器。目前我就是这样做的:

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

不幸的是,这不起作用,就像用户选择了多个选项一样,AA1中的输出将被格式化为“text,text,text”。当它尝试应用此过滤器时,它会应用带有该完整字符串的文本过滤器。要使其具有所需的功能,需要使用包含每个所选项目的数组进行过滤。

我对如何实现这一点感到有些困惑。我的想法是我需要将每个列表框选择输出到单个单元格,然后将自动筛选条件设置为引用这些单元格的数组。我只是不确定如何做到这一点。对任何建议都很满意。

1 个答案:

答案 0 :(得分:1)

您可以使用Split()创建一个数组:

Criteria1:=Split(Range("$AA$1").Value,", ")